fetchall()在Codeigniter 3中不起作用配置的pdo驱动程序

fetchall()在Codeigniter 3中不起作用配置的pdo驱动程序

问题描述:

我无法在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

代码数据库函数和查询生成器类没有函数fetchAll。任何时候你使用$this->db->...你正在使用数据库类。我推荐学习documentation

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

+0

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

+0

恕我直言,你应该总是使用查询生成器,无论什么 – sintakonte

+0

@sintakonte我可以用Query Builder定义准备好的语句吗?或者我不必使用准备好的声明,如果我设置pdodriver? – ios