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í eldb
objeto, y puede ver la consulta allí en laqueries
propiedad.Inténtalo tú mismo:
Si sabe que solo tiene una consulta, puede imprimirla directamente:
fuente
Hay un nuevo método público
get_compiled_select
que puede imprimir la consulta antes de ejecutarla._compile_select
ahora 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_select
función deDB_active_rec.php
fuente
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 unxdebugSettings
nodo 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é
protected
de la línea de abajo del archivo\system\database\DB_active_rec.php
y funcionófuente