Mot clé LIMIT avec instructions préparées dans MySQL
Cette question résout un problème où la clause LIMIT ne fonctionne pas comme prévu lors de l'utilisation d'instructions préparées avec la bibliothèque PDO dans MySQL.
Dans le code fourni extrait :
<pre class="brush:php;toolbar:false"> $comments = $db->prepare($query); /* where $db is the PDO object */ $comments->execute(array($post, $min, $max));
Les paramètres $min et $max sont traités comme des chaînes par la méthode PDOStatement::execute. Par conséquent, l'instruction SQL finale devient :
LIMIT '0', '10'
ce qui entraîne une erreur de syntaxe car MySQL nécessite des valeurs numériques pour la clause LIMIT.
Solutions possibles :
Pour résoudre ce problème, envisagez les options suivantes :
Lier Paramètres manuellement :
Utiliser la chaîne Interpolation :
Exemple :
$query = sprintf('SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT %d, %d', $min, $max);
Désactiver l'émulation Prépare :
Remarque :
Ces méthodes vous permettront d'utiliser correctement la clause LIMIT avec des instructions préparées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!