Tengo una declaración sql en mi modelo,
Entonces digo
$query = $this->db->query($sql, array(fields, fields1);
if ($query) {
return true:
} else {
echo "failed";
return false;
}
Mi consulta siempre falla, ¿cómo hago para que php imprima la declaración SQL exacta que se envía a mi base de datos? Y mostrar eso en mi vista php, página
php
sql
codeigniter
Technupe
fuente
fuente

Puedes usar esto:
"Devuelve la última consulta que se ejecutó (la cadena de consulta, no el resultado)".
Reff: https://www.codeigniter.com/userguide3/database/helpers.html
fuente
Puede mostrar el SQL generado por ActiveRecord:
Antes de que se ejecute la consulta:
Y después de que se haya ejecutado:
fuente
$this->db->get_compiled_select()lugar.si necesita una prueba rápida en su consulta, esto funciona muy bien para mí
fuente
Después de intentar sin éxito usar
_compiled_select()oget_compiled_select()simplemente imprimí eldbobjeto, y puede ver la consulta allí en laqueriespropiedad.Inténtalo tú mismo:
Si sabe que solo tiene una consulta, puede imprimirla directamente:
fuente
Hay un nuevo método público
get_compiled_selectque puede imprimir la consulta antes de ejecutarla._compile_selectahora está protegido, por lo que no se puede utilizar.fuente
Simplemente puede usar esto al final ...
fuente
Ninguno de los dos
last_query()oget_compiled_select()funciona para mí, por lo que un ligero cambio de código de Pedro me funciona muy bien. No lo incluya->get()en su compilación, esto debe ser antes de -> get ()fuente
Intento la respuesta de @ Chumillas y la respuesta de @ chhameed, pero no funciona porque el sql está mal, así que encontré un nuevo enfoque, como este:
echo $sql; flush(); exit;antes de lareturn $sql;_compile_selectfunción deDB_active_rec.phpfuente
Agregue esta línea justo después de la consulta que desea imprimir.
Ejemplo:
$ consulta = $ this-> db-> query ('SELECT * FROM table WHERE condition');
// Agrega esta línea.
var_dump ($ this-> db-> last_query ());
salida();
o
echo $ this-> db-> last_query ();
fuente
Estoy usando xdebug para ver estos valores en VSCode con la extensión respectiva y CI v2.x. Agrego la expresión
$this->db->last_query()en la sección de observación, y agrego unxdebugSettingsnodo como estas líneas para obtener un valor no truncado en launch.json.Y ejecute mi depurador con el punto de interrupción y finalmente seleccione mi expresión y haga clic derecho> copiar valor.
fuente
Tuve exactamente el mismo problema y finalmente encontré la solución. Mi consulta se ejecuta como:
Para mostrar el comando sql, todo lo que tenía que hacer era crear una variable ($ resulttring) con el mismo contenido exacto que mi consulta y luego repetirla, así:
<?php echo $resultstring = 'SELECT * FROM clients WHERE ' . $sql_where . ' AND ' . $sql_where2 . ' ORDER BY acconame ASC '; ?>¡Funciona!
fuente
usar
get_compiled_select()para recuperar la consulta en lugar de reemplazarlafuente
Leo todas las respuestas aquí, pero no puedo obtener
a trabajar, me dio un error como,
Así que eliminé
protectedde la línea de abajo del archivo\system\database\DB_active_rec.phpy funcionófuente