PDO的結果集物件方法、預處理語句、資料庫連線屬性
阿新 • • 發佈:2018-12-24
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/>';
}
資料庫連線屬性其實沒多少東西,主要就是在初始化專案的時候,對資料庫的一些連線的屬性進行一些專案化的設定,具體的看專案需求進行設定