Heim >Backend-Entwicklung >PHP-Tutorial >Wie verwende ich LIMIT in MySQL-vorbereiteten Anweisungen mit PHP richtig?
LIMIT-Schlüsselwort in MySQL mit vorbereiteter Anweisung
Beim Versuch, das LIMIT-Schlüsselwort in einer vorbereiteten Anweisung mit MySQL zu verwenden, kann unerwartetes Verhalten auftreten. wie etwa Analysefehler bei der Verwendung von Zeichenfolgen als Parameter. Dieses Problem entsteht dadurch, dass das PDO von PHP alle Parameter während der Ausführung standardmäßig als Zeichenfolgen behandelt.
In Ihrer bereitgestellten Abfrage:
SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT ?, ?
Die Werte für die LIMIT-Parameter werden als Zeichenfolgen eingefügt, was zur Folge hat in einer ungültigen SQL-Syntax:
LIMIT '0', '10'
Um dieses Problem zu beheben, haben Sie mehrere Optionen:
Parameter mit Typ binden
Binden Sie die LIMIT-Parameter einzeln und geben Sie ihre Datentypen an:
$comments->bindParam(2, $min, PDO::PARAM_INT); $comments->bindParam(3, $min, PDO::PARAM_INT);
Parameter außerhalb übergeben die vorbereitete Anweisung
Vermeiden Sie die Verwendung von Parametern für die LIMIT-Werte und betten Sie diese direkt in die ein Abfrage:
$query = sprintf('SELECT id, content, date FROM comment WHERE post = ? ORDER BY date DESC LIMIT %d, %d', $min, $max);
Emulierte Vorbereitungen deaktivieren
Einige Treiber emulieren vorbereitete Anweisungen und zitieren möglicherweise automatisch numerische Argumente. Deaktivieren Sie dieses Verhalten:
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
Durch die Implementierung eines dieser Ansätze können Sie das Schlüsselwort LIMIT in vorbereiteten Anweisungen in MySQL korrekt verwenden.
Das obige ist der detaillierte Inhalt vonWie verwende ich LIMIT in MySQL-vorbereiteten Anweisungen mit PHP richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!