- 持久化连接
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
PDO::ATTR_PERSISTENT => true
));
?>
Note:
如果想使用持久连接,必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT
。如果是在对象初始化之后用 PDO::setAttribute() 设置此属性,则驱动程序将不会使用持久连接。
1.预处理的形式用prepare()
$name = '张三';
$id=1;
$stmt = $db>prepare("update names set name=:name where id=:id");
$stmt->execute(array(':name'=>$name,':id'=>$id);
$row = $stmt->fetch();
注意:
预处理的形式的时候,使用prepare()
1.直接使用变量形式query()
$name = 'zhangsan';
$id = 1;
$stmt = $le_db1->query("update names set name='".$name."' where id=$id");
$stmt->execute();
注意:
// sql语句相当于 "update names set name='".'zhangsan'."' where id=$id"
不可以直接把字符串变量写入query中
2. PDO
中
1.每次取出一条数据 得到的是一条一维数组。如果没有查询结果,则返回的是布尔值false
$stmt->execute();
$rows = $stmt->fetch();
2.取出所有数据,得到的是二维数组
$stmt->execute();
$rows = $stmt->fetchAll();
3.获取执行取出的总条数,不管是执行1还是2,$stmt->rowCount()得到的结果都是一个int类型 没有数据是0
$cou = $stmt->rowCount(); // 总共取出多少条
3. MYSQI
中
1.取出一条数据,得到的是一维数组
$stmt = $mysqli->query($sql);
$stmt =$stmt->fetch_row();
2.取出所有数据,得到的是二维数组
$stmt = $mysqli->query($sql);
$stmt =$stmt->fetch_all();
3.取出执行的的条数 没有数据是0
$stmt = $mysqli->query($sql);
$stmt =$stmt->num_rows;
$mysqli->query($sql)
得到的结果是
mysqli_result Object
(
[current_field] => 0
[field_count] => 3
[lengths] =>
[num_rows] => 5 // 总条数
[type] => 0
)
4.解决变量为空插入数据库没值无法插入的问题
场景:从一个数据表里面取数据,导入另一个数据表。这个时候有可能有些字段是null值,那么插入新的表里面,我们一般组成的sql语句会变成(,,,)。解决这种方式很简单,我们应该将变量加上单引号即可
$str = 'test';
echo "'$str'"; //得到的结果是 'test' 带引号的test
$name = 'name';
$email = 'email';
$sql = "INSERT INTO test (name,email)VALUES ('$name','$email')";
输出这条sql语句得到的结果是
INSERT INTO test (name,email)VALUES ('name','email')
这样才可以正常的插入
如果是数组,我们要这样插入
$arr = array(
'name' =>'name',
'email' =>'email',
);
$sql = "INSERT INTO test (name,email)VALUES ('{$arr['name']}','{$arr['email']}')";
- 5.有时候我们用预处理的方式写字段的时候,如果字段比较长的话,会比较麻烦,下面我写了几个函数
// 键值对
function get_param_iteams($row){
$tmp = array();
foreach ($row as $key=>$value){
if (!$value){
unset($row[$key]);
}else{
$tmp = array_merge($tmp,array(':'.$key=>$value));
}
}
return $tmp;
}
// 带 :
function set_param_iteams_values($arr){
$keys = array_keys($arr);
$tmp = '';
foreach ($keys as $value){
$tmp= $tmp.','.$value;
}
return ltrim($tmp,',');
}
// 没有 :
function set_param_iteams_pre($arr){
$keys = array_keys($arr);
$tmp = '';
foreach ($keys as $value){
$tmp= $tmp.','.ltrim($value,':');
}
return ltrim($tmp,',');
}
// update
function update_iteams($row){
$tmp = '';
$keys = array_keys($row);
foreach ($keys as $val){
$tmp = $tmp.$val.'=:'.$val;
}
return $tmp;
}