Consulta de eco antes de la ejecución y sin ejecución en Codeigniter Active Record

Estoy buscando una forma de ver la cadena generada de la consulta pero sin ejecutarla.

Tenga en cuenta que la consulta no se ha ejecutado antes. (No quiero $this->db->last_query(); )

Espero que haya un método con un nombre como $this->db->echo_query_string($table_name = ''); para usar exactamente como $this->db->get($table_name = ''); PERO LA ÚNICA DIFERENCIA ES QUE get() ejecuta el código, pero echo_query_string() simplemente hace eco de la cadena de consulta sin ejecución .

Puede ver la consulta comstackda por cualquiera de estas funciones

 /* SELECT */ $this->db->_compile_select(); /* INSERT */ $this->db->_insert(); /* UPDATE */ $this->db->_update(); 

No necesita cambiar ningún archivo en codeigniter porque ya proporciona un método para hacerlo.

Utilizando

echo $this->db->last_query();

Producirá

select * from some_table...

Y esto es todo.

Agregué este pequeño método en DB_active_rec.php

 function return_query() { return $this->_compile_select(); } 

Uso

 $this->db->select('id,user_name')->from('user')->where('id',1); $string = $this->db->return_query(); echo $string; 

Resultado

 SELECT `id`, `user_name` FROM (`user`) WHERE `id` = 1 

De esta manera, está obligado a usar

 $this->db->from() 

En lugar de

 $this->db->get() 

Que ejecuta la consulta

A partir de la versión 3 de codeigiter, consulte la URL https://codeigniter.com/userguide3/database/helpers.html y https://codeigniter.com/userguide3/database/query_builder.html.

  • echo $ this-> db-> update_string () O echo $ this-> db-> get_compiled_update ();
  • echo $ this-> db-> insert_string () O $ this-> db-> get_compiled_insert ();
  • echo $ this-> db-> get_compiled_delete ()
  • echo $ this-> db-> get_compiled_select ();