PDO的使用

  • 持久化连接
 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;
}

你可能感兴趣的:(PDO的使用)