pdo知識總結

PDO 用了這麼久了這裏抽時間總結下:php

   pdo (php data object) 是php5 新出來的支持 mysql 操做的一個功能。用其可代替mysqli擴展。由於是php自帶的。因此我以爲效率方面會比phpmysqli等擴展高。mysql

安裝pdo可參考以前的文章,這裏就不詳細介紹了。sql

 

  

/*
*  $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;

獲取異常fetch

    // 屬性
    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 表示無錯誤)spa

相關文章
相關標籤/搜索