PDO 用了这么久了这里抽时间总结下:
pdo (php data object) 是php5 新出来的支持 mysql 操作的一个功能。用其可代替mysqli扩展。因为是php自带的。所以我觉得效率方面会比phpmysqli等扩展高。
安装pdo可参考之前的文章,这里就不详细介绍了。
/*
* $sql = 'insert into tableName (title) values(:title)';
* $data = array(':title'=>'123')
* 返回格式统一 array('code','mes','data')
*/
function querySql($sql,$data=array()){
try{
$connect = new PDO('mysql:host=数据库地址;dbname=数据库名',用户名,密码,array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8"));//链接数据库
}catch(PDOException $e){
return array(0,$e->getMessage(),array());//链接失败返回失败信息
}
if(!$connect){
$mes='database connect is error! by jacky!';
return array(0,$mes,array()); //返回失败信息
}else{
$res_data = $connect->prepare($sql);//预处理一个sql
if(count($data)==0){ //判断有没有展位的参数
$res_data->execute(); //执行sql语句
}else{
$res_data->execute($data); //将data中数据赋值到sql中 ,执行sql 语句
}
$error = $res_data->errorInfo(); //获取执行结果
if($error[0]=='00000'){ //返回中第一个为00000则表示执行成功,语句没有问题
$insert_id = $connect->lastInsertId();// insert id 获取插入的最后一个id 有则返回,没有则为空
$update_count = $res_data->rowCount();//update count 获取更新的条数 有则返回,没有则为空
$connect = null; //关闭这个sql链接
$return_data = array();//select data 准备获取查询的数据
foreach ($res_data as $key => $r) { //通过循环将查询的数据存入前面定义的数组中
$return_data[$key] = $r;
}
return array('code'=>1,'mes'=>'ok','data'=>array('select'=>$return_data,'insert_id'=>$insert_id,'update_count'=>$update_count));//将查询、更新、插入到的返回数据返回
}else{
$connect = null; //sql语句有错误,关闭这个sql链接
return array('code'=>0,'mes'=>implode(',',$error),'data'=>array('select'=>array(),'insert_id'=>array(),'update_count'=>array()));//返回sql的错误,将其他赋值为空
}
}
上述代码中select 出的结果 也可一次性放入一个数组中
$result_arr = $rs->fetchAll();
return array('code'=>1,'mes'=>'ok','data'=>array('select'=>$result_arr,'insert_id'=>$insert_id,'update_count'=>$update_count));//将查询到的数据返回
返回查询的条数
$rs = $db->query("SELECT COUNT(*) FROM foo");
$col = $rs->fetchColumn();
echo $col;
获取异常
// 属性
protected $message = 'Unknown exception'; // 异常信息
protected $code = 0; // 用户自定义异常代码
protected $file; // 发生异常的文件名
protected $line; // 发生异常的代码行号
// 方法
final function getMessage(); // 返回异常信息
final function getCode(); // 返回异常代码
final function getFile(); // 返回发生异常的文件名
final function getLine(); // 返回发生异常的代码行号
final function getTrace(); // backtrace() 数组
final function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息
errorInfo()返回(00000 表示无错误)
![](https://img-blog.csdnimg.cn/img_convert/f32f46e198c8564b42f972e9fcc515e0.png)