Les Allergies
Alimentaires
Posez votre question Signaler

Erreur 1064

yveslands - Dernière réponse le 25 juin 2009 à 14:11
Bonjour, j'ai un pb avec l'une de mes requêtes SQL. En fait je travaille en PDO(PHP Data Object).
Voici une partie du code du fichier class.inc.php:
class subjectTable {
public $selectAll;
public function __construct($db) {
$this->selectAll = $db->prepare("SELECT * FROM sujets_de_forum ORDER BY date_postage ASC LIMIT ?, ? "); //ligne 200
}
public function selectAll($offset, $lignes) {
$this->selectAll2->execute(array($offset, $lignes));
}
}
Dans le fichier forum.php j'appelle la fonction selectAll de cette facon:
$db = new MyPDO(HOST_DB, USER, PASS);
$subjectTable = new subjectTable($db);
$subjectTable->selectAll2($debut, $nb_message); // $debut et $nb_message etant des entiers. ligne 85
mais j'obtients l'erreur suivante:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 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 ''0', '10'' at line 1' in C:\xampp\htdocs\lymen\includes\class.php:200 Stack trace: #0 C:\xampp\htdocs\lymen\includes\class.php(200): PDOStatement->execute(Array) #1 C:\xampp\htdocs\lymen\forum.php(85): subjectTable->selectAll2(0, 10) #2 {main} thrown in C:\xampp\htdocs\lymen\includes\class.php on line 200
Lire la suite 

Erreur 1064 »

Suggestions
3 réponses
Réponse
+0
moins plus
Bonjour

J'ai bien peur que tu ne puisse pas utiliser prepare avec des ? sur les valeurs de LIMIT. Visiblement (même si je n'ai pas vu où c'était clairement dit dans la doc), lors de la substitution, il y a des apostrophes d'ajoutées autour de la valeur. Or il n'en faut absolument pas aux valeurs de LIMIT : LIMIT 0,10 est correct, LIMIT '0','10' est incorrect, comme le dit ton message.
Mais je suppose que tu peux appeler la requête directement, non ?
Ajouter un commentaire
Réponse
+0
moins plus
En regardant la doc d'un peu plus près... (je n'ai jamais pratiqué les requêtes préparées), tu as bind_param qui devrait te permettre de résoudre ça si tu lui dis que tes paramètres sont des entiers :
http://fr.php.net/manual/fr/mysqli-stmt.bind-result.php
Ajouter un commentaire
Réponse
+0
moins plus
pardon, bind-result c'était pour les résultats. il faut aller voir
http://fr.php.net/manual/fr/mysqli-stmt.bind-param.php
Ajouter un commentaire
Ce document intitulé « Erreur 1064 » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?