2017-09-27 11 views
-1

Je ne peux pas récupérer le résultat en utilisant le pilote PDO dans Codeigniter3.fetchall() ne fonctionne pas dans Codeigniter 3 configuré pilote pdo

pilote Configuré pdo dans config/database.php comme ci-dessous

$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(); 

mais les résultats dans

An uncaught Exception was encountered 

Type: Error 

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

Mais si j'essaie en créant PDO Object i pouvez extraire directement des données

$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) 
    { 
    } 

Que dois-je faire pour corriger pdo configuré dans l'application/database.php?

+0

Modifier '' dsn '=>' mysql: hôte = localhost; dbname = my_db ', 'à' 'pgsql: hôte = localhost; nombd = my_db'', et vérifier – Saty

+0

@Saty Merci pour votre réponse. J'ai essayé ce que vous avez suggéré mais toujours la même erreur – ios

+0

Avez-vous mis '' dbdriver '=>' pdo ', ' – Saty

Répondre

3

Les fonctions de base de données codeigniter et la classe Query Builder n'ont pas de fonction appelée fetchAll. Chaque fois que vous utilisez $this->db->..., vous utilisez la classe de base de données. Je recommande l'étude de documentation.

Oui, si vous pouvez créer et utiliser directement un objet PDO.

+0

Merci de votre réponse. Si je veux utiliser PDO directement, devrais-je placer $ db = new PDO ($ dsn, $ nom d'utilisateur, $ mot de passe); dans chaque classe de modèle? . Est-ce mauvais ? Je suis un débutant. – ios

+0

imho, vous devriez toujours utiliser le constructeur de requête, peu importe ce que – sintakonte

+0

@sintakonte puis-je définir des instructions préparées avec Query Builder? ou je ne dois pas utiliser la déclaration préparée si je mets pdodriver? – ios