定義:PDO(PHP Data Object)是PHP5才支持的擴展,它爲PHP訪問各類數據庫定義了一個輕量級的、一致性的接口。 php
PDO是PHP5中的一個重大功能,PHP6中將只默認使用PDO來處理數據庫。而咱們將經過PDO來統一對各類數據庫執行查詢和獲取數據等操做
PDO->query() 用於查詢數據記錄並返回查詢結果。mysql
語法:sql
PDO->query()
PDO->query() 用於查詢數據記錄並返回查詢結果。 數據庫
語法: 數組
PDO->query( string statement )例子: fetch
<?php //構造PDO鏈接 $dbh = "mysql:host=localhost;dbname=test"; $db = new PDO($dbh, 'root', 'root123'); $db->query("set character set 'gbk'"); //查詢數據 $sql = "SELECT * FROM user"; $sth = $db->query($sql); while($row = $sth->fetch()){ echo "用戶名:".$row['username']."<br />"; echo "電子郵件:".$row['email']."<br />"; echo "註冊日期:".date("Y-m-d", $row['regdate'])."<br /><br />"; } $db = null; ?>在上面的例子中,咱們仿照 MySQL 教程章節的查詢例子,用 PDO 的方式對 user 表進行查詢操做。 spa
PDOStatement->fetch()
PDO 中的 fetch() 方法用於從結果集中獲取一行結果,該方法行爲相似 mysql_fetch_array() ,不一樣的是該方法不只返回數組,還可返回對象。 orm
語法: 對象
PDOStatement->fetch(int mode)mode 爲可選參數,表示但願返回的結果集類型,默認爲關聯及數字索引共有的數組形式。 教程
取值 | 說明 |
---|---|
PDO::FETCH_ASSOC | 關聯索引(字段名)數組形式 |
PDO::FETCH_NUM | 數字索引數組形式 |
PDO::FETCH_BOTH | 默認,關聯及數字索引數組形式都有 |
PDO::FETCH_OBJ | 按照對象的形式 |
PDO::FETCH_BOUND | 經過 bindColumn() 方法將列的值賦到變量上 |
PDO::FETCH_CLASS | 以類的形式返回結果集,若是指定的類屬性不存在,會自動建立 |
PDO::FETCH_INTO | 將數據合併入一個存在的類中進行返回 |
PDO::FETCH_LAZY | 結合了 PDO::FETCH_BOTH、PDO::FETCH_OBJ,在它們被調用時建立對象變量 |
PDOStatement->setFetchMode()
若是不在 fetch() 中指定返回的結果類型,也能夠單獨使用 setFetchMode() 方法設定,如:...... $sth = $db->query($sql); $sth->setFetchMode(PDO::FETCH_ASSOC); while($row = $result->fetch()){ ...... }PDOStatement->fetchAll()
fetchAll() 方法用於把數據從數據集一次性取出並放入數組中。
語法:
PDOStatement->fetchAll([int mode [,int column_index]])
mode 爲可選參數,表示但願返回的數組,column_index 表示列索引序號,當 mode 取值 PDO::FETCH_COLUMN 時指定。
取值 | 說明 |
---|---|
PDO::FETCH_COLUMN | 指定返回返回結果集中的某一列,具體列索引由 column_index 參數指定 |
PDO::FETCH_UNIQUE | 以首個鍵值下表,後面數字下表的形式返回結果集 |
PDO::FETCH_GROUP | 按指定列的值分組 |
例子:
$sth = $db->query($sql); $row = $sth->fetchAll(); //只返回 username(index=1) $row = $sth->fetchAll(PDO::FETCH_COLUMN, 1); //將 username GROUP 返回(注:因爲表中 username 無重複記錄,所以本例無心義) $row = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP, 1);
PDO->query( string statement )
例子:
<?php //構造PDO鏈接 $dbh = \"mysql:host=localhost;dbname=test\"; $db = new PDO($dbh, \'root\', \'root123\'); $db->query(\"set character set \'gbk\'\"); //查詢數據 $sql = \"SELECT * FROM user\"; $sth = $db->query($sql); while($row = $sth->fetch()){ echo \"用戶名:\".$row\[\'username\'\].\"<br />\"; echo \"電子郵件:\".$row\[\'email\'\].\"<br />\"; echo \"註冊日期:\".date(\"Y-m-d\", $row\[\'regdate\'\]).\"<br /><br />\"; } $db = null; ?>
在上面的例子中,咱們仿照 MySQL 教程章節的查詢例子,用 PDO 的方式對 user 表進行查詢操做。
PDOStatement->fetch()
PDO 中的 fetch() 方法用於從結果集中獲取一行結果,該方法行爲相似 mysql_fetch_array() ,不一樣的是該方法不只返回數組,還可返回對象。
語法:
PDOStatement->fetch(int mode)
mode 爲可選參數,表示但願返回的結果集類型,默認爲關聯及數字索引共有的數組形式。
取值 | 說明 |
---|---|
PDO::FETCH_ASSOC | 關聯索引(字段名)數組形式 |
PDO::FETCH_NUM | 數字索引數組形式 |
PDO::FETCH_BOTH | 默認,關聯及數字索引數組形式都有 |
PDO::FETCH_OBJ | 按照對象的形式 |
PDO::FETCH_BOUND | 經過 bindColumn() 方法將列的值賦到變量上 |
PDO::FETCH_CLASS | 以類的形式返回結果集,若是指定的類屬性不存在,會自動建立 |
PDO::FETCH_INTO | 將數據合併入一個存在的類中進行返回 |
PDO::FETCH_LAZY | 結合了 PDO::FETCH_BOTH、PDO::FETCH_OBJ,在它們被調用時建立對象變量 |
PDOStatement->setFetchMode()
若是不在 fetch() 中指定返回的結果類型,也能夠單獨使用 setFetchMode() 方法設定,如:...... $sth = $db->query($sql); $sth->setFetchMode(PDO::FETCH_ASSOC); while($row = $result->fetch()){ ...... }
fetchAll() 方法用於把數據從數據集一次性取出並放入數組中。
語法:
PDOStatement->fetchAll(\[int mode \[,int column_index\]\])
mode 爲可選參數,表示但願返回的數組,column_index 表示列索引序號,當 mode 取值 PDO::FETCH_COLUMN 時指定。
取值 | 說明 |
---|---|
PDO::FETCH_COLUMN | 指定返回返回結果集中的某一列,具體列索引由 column_index 參數指定 |
PDO::FETCH_UNIQUE | 以首個鍵值下表,後面數字下表的形式返回結果集 |
PDO::FETCH_GROUP | 按指定列的值分組 |
例子:
$sth = $db->query($sql); $row = $sth->fetchAll(); //只返回 username(index=1) $row = $sth->fetchAll(PDO::FETCH_COLUMN, 1); //將 username GROUP 返回(注:因爲表中 username 無重複記錄,所以本例無心義) $row = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP, 1);