本文實例講述了php使用PDO獲取結果集的方法。分享給大家供大家參考,具體如下:
fetch()方法
fetch()方法用于獲取結果集的下一行,語法如下:
mixed PDOStatement::fetch([int fetch_style][,int cursor_orientation[,int cursor_offset]]])
參數fetch_style控制結果集的返回方式
PDO::FETCH_ASSOC -- 關聯數組形式
PDO::FETCH_NUM -- 數字索引數組形式
PDO::FETCH_BOTH -- 兩者數組形式都有,這是缺省的
PDO::FETCH_OBJ -- 按照對象的形式,類似于以前的 mysql_fetch_object()
PDO::FETCH_BOUND--以布爾值的形式返回結果,同時獲取的列值賦給bindParam()方法中的指定變量。
PDO::FETCH_LAZY--以關聯數組、數字索引數組和對象3種形式返回結果
cursor_orientation:PDOStatement對象的一個滾動游標,可用于獲取指定的一行。
cursor_offset: 游標的偏移量
例如:
在PDO中通過預處理語句prepare()和execute()執行SQL查詢語句,并且應用while()語句和fetch()方法完成數據的循環輸出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
$dbms = 'mysql' ; //數據庫類型 $dbName = 'admin' ; //使用的數據庫 $user = 'root' ; //數據庫連接用戶名 $pwd = 'password' ; //數據庫連接密碼 $host = 'localhost' ; //數據庫主機名 $dsn = "$dbms:host=$host;port=3306;dbname=$dbName" ; try { $pdo = new PDO( $dsn , $user , $pwd ); //初始化一個PDO對象,就是創建了數據庫連接對象$pdo $query = "select * from user" ; //需要執行的sql語句 $res = $pdo ->prepare( $query ); //準備查詢語句 $res ->execute(); while ( $result = $res ->fetch(PDO::FETCH_ASSOC)){ echo $result [ 'id' ]. " " . $result [ 'username' ]. " " . $result [ 'password' ]. '<br>' ; } } catch (Exception $e ){ die ( "Error!:" . $e ->getMessage(). '<br>' ); } |
運行結果為:
1
2
3
|
1 107lab e10adc3949ba59abbe56e057f20f883e 4 admin 123456 5 admin 123456 |
fetchAll()方法
fetchAll()方法用于獲取結果集中的所有行,其返回值是一個包含結果集中所有數據的二進制數組。語法如下:
array PDOStatement::fetchAll([int fetch_style[,int column_index]])
參數說明:
fetch_style:控制結果集中數據的顯示方式。
column_index: 字段的索引。
例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$dbms = 'mysql' ; //數據庫類型 $dbName = 'admin' ; //使用的數據庫 $user = 'root' ; //數據庫連接用戶名 $pwd = 'password' ; //數據庫連接密碼 $host = 'localhost' ; //數據庫主機名 $dsn = "$dbms:host=$host;port=3306;dbname=$dbName" ; try { $pdo = new PDO( $dsn , $user , $pwd ); //初始化一個PDO對象,就是創建了數據庫連接對象$pdo $query = "select * from user" ; //需要執行的sql語句 $res = $pdo ->prepare( $query ); //準備查詢語句 $res ->execute(); $result = $res ->fetchAll(PDO::FETCH_ASSOC); print_r( $result ); } catch (Exception $e ){ die ( "Error!:" . $e ->getMessage(). '<br>' ); } |
運行結果為:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
Array ( [0] => Array ( [id] => 1 [username] => 107lab [password] => e10adc3949ba59abbe56e057f20f883e ) [1] => Array ( [id] => 4 [username] => admin [password] => 123456 ) [2] => Array ( [id] => 5 [username] => admin [password] => 123456 ) ) |
此時可以通過foreach來遍歷這個二維數組
1
2
3
|
foreach ( $result as $val ){ echo $val [ 'username' ]. '<br>' ; } |
運行結果為:
1
2
3
|
107lab admin admin |
fetchColumn()方法
fetchColumn()方法獲取結果集中下一行指定列的值,語法如下:
string PDOStatement::fetchColumn([int column_number])
可選參數column_number設置行中列的索引值,該值從0開始。如果省略該參數則將從第1列開始取值
例如:
通過fetchColumn()方法獲取結果集中下一行中指定列的值。(或第一列id的值)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
$dbms = 'mysql' ; //數據庫類型 $dbName = 'admin' ; //使用的數據庫 $user = 'root' ; //數據庫連接用戶名 $pwd = 'password' ; //數據庫連接密碼 $host = 'localhost' ; //數據庫主機名 $dsn = "$dbms:host=$host;port=3306;dbname=$dbName" ; try { $pdo = new PDO( $dsn , $user , $pwd ); //初始化一個PDO對象,就是創建了數據庫連接對象$pdo $query = "select * from user" ; //需要執行的sql語句 $res = $pdo ->prepare( $query ); //準備查詢語句 $res ->execute(); echo $res ->fetchColumn(0). '<br>' ; echo $res ->fetchColumn(0). '<br>' ; echo $res ->fetchColumn(0). '<br>' ; } catch (Exception $e ){ die ( "Error!:" . $e ->getMessage(). '<br>' ); } |
運行結果為:
1
2
3
|
1 4 5 |
希望本文所述對大家PHP程序設計有所幫助。