配置CodeIgniter為PDO 類型,但是怎麼都查詢不到資料,卻可以查處有多少記錄。
代碼
仔細跟蹤代碼,發現有如下一句:
#檔案 /system/database/drivers/pdo/pdo_driver.php function _execute($sql) { $sql = $this->_prep_query($sql); $result_id = $this->conn_id->prepare($sql); if (is_object($result_id) && $result_id->execute()) { if (is_numeric(stripos($sql, 'SELECT'))) { $this->affect_rows = count($result_id->fetchAll()); } else { $this->affect_rows = $result_id->rowCount(); } } else { $this->affect_rows = 0; return FALSE; } return $result_id; }
問題
$this->affect_rows = count($result_id->fetchAll());
這裡的CI使用 $result_id->fetchAll() 來統計合格個數,但是這個 fetchAll() 執行一次之後就不能再得到資料。所以導致後期就無法獲得資料。
測試
db->query($sql)->result_array(); }}
//這樣寫就會有結果記錄,但是預設的 $this->db->query($sql) .. 卻又成擺設了!class User_model extends CI_Model{ public function getList(){ $sql = "select * from ci_user"; $stmt = $this->db->conn_id->prepare($sql); $stmt->execute(); return $stmt->fetchAll(); }}
應該是不支援,但是官網下載的裡面卻帶有PDO包。
想確認的是,codeigniter是否真的支援PDO?希望能夠給個例子!
回複內容:
配置CodeIgniter為PDO 類型,但是怎麼都查詢不到資料,卻可以查處有多少記錄。
代碼
仔細跟蹤代碼,發現有如下一句:
#檔案 /system/database/drivers/pdo/pdo_driver.php function _execute($sql) { $sql = $this->_prep_query($sql); $result_id = $this->conn_id->prepare($sql); if (is_object($result_id) && $result_id->execute()) { if (is_numeric(stripos($sql, 'SELECT'))) { $this->affect_rows = count($result_id->fetchAll()); } else { $this->affect_rows = $result_id->rowCount(); } } else { $this->affect_rows = 0; return FALSE; } return $result_id; }
問題
$this->affect_rows = count($result_id->fetchAll());
這裡的CI使用 $result_id->fetchAll() 來統計合格個數,但是這個 fetchAll() 執行一次之後就不能再得到資料。所以導致後期就無法獲得資料。
測試
db->query($sql)->result_array(); }}
//這樣寫就會有結果記錄,但是預設的 $this->db->query($sql) .. 卻又成擺設了!class User_model extends CI_Model{ public function getList(){ $sql = "select * from ci_user"; $stmt = $this->db->conn_id->prepare($sql); $stmt->execute(); return $stmt->fetchAll(); }}
應該是不支援,但是官網下載的裡面卻帶有PDO包。
想確認的是,codeigniter是否真的支援PDO?希望能夠給個例子!
可以拓展下driver