1. 程式人生 > >PDO的結果集物件方法、預處理語句、資料庫連線屬性

PDO的結果集物件方法、預處理語句、資料庫連線屬性

PDO中的結果集物件方法

方法名 註釋
execute() 執行一條預處理語句
rowCount() 返回上一個SQL語句影響的行數
fetch() 從結果集中獲取一行
fetchAll() 返回一個包含結果集中所有行的陣列
setFetchMode() 為語句設定預設的獲取模式
fetchColumn() 從結果集中的下一行返回單獨的一列
fetchObject() 獲取下一行並作為一個物件返回
bindParam() 繫結一個引數到指定的變數名
bindValue() 把一個值繫結到一個引數

這個跟mysqli中的mysqli_fetch_array()這些方法基本都是相同的功能,只是在不同形式下的不同實現和不同方式的呼叫而已,返回的資料結果都是一樣的

預處理形式的SQL查詢

$sql = "select * from users where name = '小明';";

準備一個預處理語句,方法執行完畢後返回的是一個PDO的stmt物件(PDOStatement 物件)
prepare方法是用來準備一條預處理語句的方法

$stmt = $pdo->prepare($sql);

execute方法是用來執行預處理語句的,執行成功返回bool的true

$res = $stmt->execute();

拿資料是通過PDOStatement物件中對的一些方法去獲取資料
示例:

if ($res){
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
            print_r($row);
            echo '<br/>';
        }
    }else{
        echo '預處理語句執行失敗';
    }

取出資料的格式,例如返回的是索引還是關聯陣列,你可以直接在獲取資料的方法中傳入PDO這個類的常量,有很多個常量值,具體的自己百度查

取出的資料格式,例如返回的是索引陣列還是關聯陣列,可以通過PDOStatement中的setFetchMode()方法來進行設定

$stmt->setFetchMode(PDO::FETCH_BOTH);這裡設定預設索引和關聯一起返回

設定資料庫連線屬性

  • 資料庫連線屬性指的是例如自動提交、持久連線等

程式碼示例:

在例項化PDO類的時候,可以通過第四個引數直接設定資料庫連線屬性

$options = array(
        PDO::ATTR_AUTOCOMMIT=>0,
        PDO::ATTR_ERRMODE=>0
    );
    $pdo = new PDO('mysql:host=localhost;dbname=pdotest;','root','',$options);
    $pdo->query('set names utf8;');

獲取獲取資料庫連線屬性:

echo '自動提交功能狀態:' . $pdo->getAttribute(PDO::ATTR_AUTOCOMMIT);
   echo '<br/>';
   echo 'PDO的錯誤處理模式:' . $pdo->getAttribute(PDO::ATTR_ERRMODE);
   echo '<br/>';

設定資料庫連線屬性:

    $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);
    echo '關閉自動提交';
    echo '<br/>';
    echo '自動提交功能狀態:' . $pdo->getAttribute(PDO::ATTR_AUTOCOMMIT);
    echo '<br/>';
    $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);
    echo '開啟自動提交';
    echo '<br/>';
    echo '自動提交功能狀態:' . $pdo->getAttribute(PDO::ATTR_AUTOCOMMIT);
    echo '<hr/>';

如何配置常用的資料庫連線屬性,示例:

$attrArr = array(
       'AUTOCOMMIT','ERRMODE','CASE','PERSISTENT','TIMEOUT','ORACLE_NULLS',
       'SERVER_INFO','SERVER_VERSION','CLIENT_VERSION','CONNECTION_STATUS'
   );

   foreach ($attrArr as $attr){
       echo "PDO_ATTR_{$attr}:";
       //constant()函式是返回一個常量的值
       echo @$pdo->getAttribute(constant("PDO::ATTR_{$attr}"));
       echo '<br/>';
   }

資料庫連線屬性其實沒多少東西,主要就是在初始化專案的時候,對資料庫的一些連線的屬性進行一些專案化的設定,具體的看專案需求進行設定