130 votes

Comment imprimer une instruction SQL dans un modèle codeigniter

J'ai une déclaration SQL dans mon modèle,

Je dis alors

  $query = $this->db->query($sql, array(fields, fields1);

if($query){return true:}
else{echo "failed"; return false;}
 

Ma requête échoue toujours. Comment php peut-il imprimer la déclaration SQL exacte envoyée à ma base de données? Et afficher que sur ma vue php, page

242voto

chhameed Points 2245

Vous pouvez utiliser

 $this->db->last_query();
 

j'espère que c'est utile

166voto

Chumillas Points 1400
 print_r($query);
 

Vous pouvez également utiliser (dans la vue) et vous verrez l'instruction SQL:

 $this->output->enable_profiler(TRUE);
 

Profilage de l'utilisateur: http://ellislab.com/codeigniter/user-guide/general/profiling.html

42voto

pedro Points 239

Vous pouvez afficher le code SQL généré par ActiveRecord:

Avant que la requête ne s'exécute:

 $this->db->_compile_select(); 
 

Et après avoir couru:

 $this->db->last_query(); 
 

14voto

Christian Dechery Points 132

Après avoir essayé sans succès d'utiliser _compiled_select() ou get_compiled_select() je viens d'imprimer l'objet db et vous pouvez y voir la requête dans les queries propriété.

Essayez vous-même:

 var_dump( $this->db );
 

Si vous savez que vous n'avez qu'une seule requête, vous pouvez l'imprimer directement:

 echo $this->db->queries[0];
 

14voto

cmnajs Points 632

Il existe une nouvelle méthode publique get_compiled_select qui peut imprimer la requête avant de l'exécuter. _compile_select est maintenant protégé et ne peut donc pas être utilisé.

 echo $this->db->get_compiled_select(); // before $this->db->get();
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X