Heim >Backend-Entwicklung >PHP-Tutorial >Wie verwende ich LIMIT in MySQL-vorbereiteten Anweisungen mit PDO korrekt?
Verwendung des Schlüsselworts LIMIT in MySQL Prepared Statement
Bei der Verwendung vorbereiteter Anweisungen in MySQL mit PDO können Probleme mit dem Schlüsselwort LIMIT auftreten. Die folgende Abfrage:
SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT ?, ?
funktioniert nicht mit vorbereiteten PDO-Anweisungen, während sie auf LIMIT 0, 10 geändert wird. Dieses Problem hat seinen Ursprung in der Art und Weise, wie PDO Parameter verarbeitet.
PDO-Parameterbindung
PDOStatement::execute() behandelt alle Eingabeparameter standardmäßig als Zeichenfolgen. Dadurch werden die Parameter $min und $max in der LIMIT-Klausel als Strings eingefügt. MySQL analysiert die Abfrage dann wie folgt:
LIMIT '0', '10'
was zu einem Analysefehler führt.
Lösungen
Es gibt mehrere Möglichkeiten, dieses Problem zu beheben :
$comments->bindParam(1, $post, PDO::PARAM_STR); $comments->bindParam(2, $min, PDO::PARAM_INT); $comments->bindParam(3, $max, PDO::PARAM_INT);
$query = sprintf('SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT %d, %d', $min, $max);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
Durch die Implementierung einer dieser Lösungen können Sie das Schlüsselwort LIMIT erfolgreich mit vorbereiteten Anweisungen in MySQL verwenden.
Das obige ist der detaillierte Inhalt vonWie verwende ich LIMIT in MySQL-vorbereiteten Anweisungen mit PDO korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!