J'ai une instruction 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 puis-je obtenir php pour imprimer l'instruction SQL exacte envoyée à ma base de données? Et affichez-le sur ma page php, page
php
sql
codeigniter
Technupe
la source
la source
Vous pouvez utiliser ceci:
"Renvoie la dernière requête exécutée (la chaîne de requête, pas le résultat)."
Reff: https://www.codeigniter.com/userguide3/database/helpers.html
la source
Vous pouvez afficher le SQL généré par ActiveRecord:
Avant l'exécution de la requête:
Et après son exécution:
la source
$this->db->get_compiled_select()
place.si vous avez besoin d'un test rapide sur votre requête, cela fonctionne très bien pour moi
la source
Après avoir essayé sans succès d'utiliser
_compiled_select()
ouget_compiled_select()
j'ai simplement imprimé l'db
objet, et vous pouvez voir la requête dans laqueries
propriété.Essayez-le vous-même:
Si vous savez que vous n'avez qu'une seule requête, vous pouvez l'imprimer directement:
la source
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é.la source
Vous pouvez simplement l'utiliser à la fin.
la source
Ni l'un
last_query()
ni l' autre ou neget_compiled_select()
fonctionne pour moi, donc un léger changement de code de pedro fonctionne très bien pour moi. N'incluez pas->get()
dans votre build, cela doit être avant le -> get ()la source
J'essaye de répondre à la réponse de @ Chumillas et de @ chhameed, mais cela ne fonctionne pas, car le sql est faux. J'ai donc trouvé une nouvelle approche, comme celle-ci:
echo $sql; flush(); exit;
dans lareturn $sql;
_compile_select
fonction avant deDB_active_rec.php
la source
Ajoutez cette ligne juste après la requête que vous souhaitez imprimer.
Exemple:
$ query = $ this-> db-> query ('SELECT * FROM table WHERE condition');
// Ajoutez cette ligne.
var_dump ($ this-> db-> last_query ());
sortie();
ou
echo $ this-> db-> last_query ();
la source
J'utilise xdebug pour regarder ces valeurs dans VSCode avec l'extension respective et CI v2.x. J'ajoute l'expression
$this->db->last_query()
dans la section watch, et j'ajoute unxdebugSettings
nœud comme ces lignes pour obtenir une valeur non tronquée dans le launch.json.Et exécutez mon débogueur avec le point d'arrêt et enfin sélectionnez simplement mon expression et faites un clic droit> copier la valeur.
la source
J'ai eu exactement le même problème et j'ai finalement trouvé la solution. Ma requête s'exécute comme:
Pour afficher la commande sql, tout ce que j'avais à faire était de créer une variable ($ resultstring) avec exactement le même contenu que ma requête, puis de la faire écho, comme ceci:
<?php echo $resultstring = 'SELECT * FROM clients WHERE ' . $sql_where . ' AND ' . $sql_where2 . ' ORDER BY acconame ASC '; ?>
Ça marche!
la source
utiliser
get_compiled_select()
pour récupérer la requête au lieu de la remplacerla source
J'ai lu toutes les réponses ici, mais je ne peux pas obtenir
pour travailler, cela m'a donné une erreur comme,
J'ai donc supprimé
protected
de la ligne ci-dessous du fichier\system\database\DB_active_rec.php
et cela a fonctionnéla source