LIMIT-Schlüsselwort mit vorbereiteten Anweisungen in MySQL
Diese Frage befasst sich mit einem Problem, bei dem die LIMIT-Klausel bei der Verwendung vorbereiteter Anweisungen nicht wie erwartet funktioniert mit der PDO-Bibliothek in MySQL.
Im bereitgestellten Code snippet:
<pre class="brush:php;toolbar:false"> $comments = $db->prepare($query); /* where $db is the PDO object */ $comments->execute(array($post, $min, $max));
Die Parameter $min und $max werden von der Methode PDOStatement::execute als Strings behandelt. Folglich lautet die endgültige SQL-Anweisung:
LIMIT '0', '10'
was zu einem Syntaxfehler führt, da MySQL numerische Werte für die LIMIT-Klausel erfordert.
Mögliche Lösungen:
Um dieses Problem zu beheben, ziehen Sie die folgenden Optionen in Betracht:
Binden Parameter manuell:
String verwenden Interpolation:
Beispiel:
$query = sprintf('SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT %d, %d', $min, $max);
Emuliert deaktivieren Bereitet vor:
Hinweis:
Mit diesen Methoden können Sie die LIMIT-Klausel mit vorbereiteten Anweisungen korrekt verwenden.
Das obige ist der detaillierte Inhalt vonWarum funktioniert LIMIT nicht mit vorbereiteten Anweisungen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!