J'ai un peu un problème étrange qui m'a déconcerté. Tout ce que j'essaie de faire est d'exécuter une requête sur une table de base de données, mais pour une raison quelconque, CodeIgniter met des apostrophes dans la requête qui est ensuite briser la page.CodeIgniter insertion d'apostrophes dans la requête de base de données
Mon code ressemble à ceci:
$this->db->select("SUBSTRING(body,5)");
$this->db->order_by("date", "desc");
$this->data['query'] = $this->db->get_where('blog-entries', array('status' => 'P'), 3);
Mais je reçois une erreur sur cette page:
Error Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM (`blog-entries`) WHERE `status` = 'P' ORDER BY `date` desc LIMIT 3' at line 2
La requête est en fait en cours d'exécution comme:
SELECT SUBSTRING(body, `5)` FROM (`blog-entries`) WHERE `status` = 'P' ORDER BY `date` desc LIMIT 3
Comme vous On peut voir pour une raison quelconque que des apostrophes ont été ajoutées autour du nombre 5 dans la sous-chaîne. Si je supprime la sous-chaîne alors tout fonctionne et si je supprime les apostrophes et exécute la requête directement sur ma base de données, cela fonctionne aussi.
Est-ce que quelqu'un a eu des idées pour expliquer pourquoi cela peut se produire ou avoir une solution?
Votre aide serait grandement appréciée.
Un grand merci,
G.
Il s'agit en fait de back-ticks ajoutés, pas d'apostrophes. Juste pour clarifier. – MichaelRushton
Ajoute 'FALSE' en tant que second paramètre, comme ceci' $ this-> db-> select ("SUBSTRING (body, 5)", FALSE); 'le réparer? Cela devrait arrêter CodeIgniter en ajoutant des backticks. – jleft
c'est pourquoi je déteste ces constructeurs de requêtes stupides, faisant des requêtes simples dans des blocs de spaghettis haut-écran –