[PHP]PDO
- fetchAll()比較好用,一次取出所有陣列。直接用foreach ()搭配就可以了。
- fetch() 一次取單筆資料,取完後指標會指向下一筆資料。可搭配while()一筆一筆取取到結束。
- fetch() 與 fatchAll() 預設參數是 PDO::FETCH_BOTH (同時取得陣列key的編號與SQL欄位名稱,我習慣用這個)。另有 PDO::FETCH_ASSOC 為陣列形式、PDO::FETCH_OBJ 為物件形式。
- 其他參數可參考 PHP 官網
-----------------------------------
我們看裡面的記錄,數字索引和關聯索引都有,浪費資源,我們只需要關聯索引的:
<?php
$db->setAttribute(PDO::ATTR_CASE,
PDO::CASE_UPPER);
$rs
= $db->query("SELECT * FROM foo");
$rs->setFetchMode(PDO::FETCH_ASSOC);
$result_arr
= $rs->fetchAll();
print_r($result_arr);
?>
看上面的代碼,setAttribute()
方法是設置部分屬性,主要屬性有:PDO::ATTR_CASE、PDO::ATTR_ERRMODE等等,我們這裡需要設置的是PDO::
ATTR_CASE,就是我們使用關聯索引獲取數據集的時候,關聯索引是大寫還是小寫,有幾個選擇:
PDO::CASE_LOWER -- 強制列名是小寫
PDO::CASE_NATURAL -- 列名按照原始的方式
PDO::CASE_UPPER -- 強制列名為大寫
我們使用setFetchMode方法來設置獲取結果集的返回值的類型,同樣類型還有:
PDO::FETCH_ASSOC -- 關聯數組形式
PDO::FETCH_NUM -- 數字索引數組形式
PDO::FETCH_BOTH -- 兩者數組形式都有,這是缺省的
PDO::FETCH_OBJ -- 按照對象的形式,類似於以前的 mysql_fetch_object()
留言
張貼留言