2017-09-27 64 views
-1

我無法在Codeigniter3中使用PDO驅動程序獲取結果。fetchall()在Codeigniter 3中不起作用配置的pdo驅動程序

中的config/database.php中

配置PDO驅動程序如下

$db['default'] = array(
    'dsn' => 'mysql:host=localhost;dbname=my_db', 
    'hostname' => '', 
    'username' => 'root', 
    'password' => 'root', 

...

$autoload['libraries'] = array('database','session'); 

...

$query = 
      "SELECT * FROM abc LIMIT 10"; 
      var_dump($this->db); 

     $q=$this->db->query($query)->fetchAll(); 

但結果

An uncaught Exception was encountered 

Type: Error 

Message: Call to undefined method CI_DB_pdo_result::fetchAll() 

但是,如果我通過創建PDO對象嘗試直接我就可以獲取數據

$dsn="mysql:host=localhost;dbname=my_db"; 
     $username = "root"; 
     $password = "root"; 
     try 
     { 
      $db = new PDO($dsn,$username,$password); 
      echo "connected"; 

      $query = 
       "SELECT * FROM abc "; 

      $q=$db->query($query)->fetchAll(); 


      echo "<pre>"; 
      var_dump($q); 
      echo "</pre>"; 

    } 
    catch (PDOException $e) 
    { 
    } 

我應該做些什麼來解決PDO應用/ database.php中配置?

+0

將''dsn'=>'mysql:host = localhost; dbname = my_db','改爲''pgsql:host = localhost; dbname = my_db'',並檢查 – Saty

+0

@Saty Thankyou的回覆。我試過你的建議,但仍然是相同的錯誤 – ios

+0

你設置了''dbdriver'=>'pdo',' – Saty

回答

3

代碼數據庫函數和查詢生成器類沒有函數fetchAll。任何時候你使用$this->db->...你正在使用數據庫類。我推薦學習documentation

是的,如果您可以直接創建和使用PDO對象。

+0

Thankyou的回覆。如果我想直接使用PDO,我應該放置$ db =新的PDO($ dsn,$ username,$ password);在每一個模特班? 。那不好嗎 ?我是一個新手。 – ios

+0

恕我直言,你應該總是使用查詢生成器,無論什麼 – sintakonte

+0

@sintakonte我可以用Query Builder定義準備好的語句嗎?或者我不必使用準備好的聲明,如果我設置pdodriver? – ios

相關問題