Heim >Backend-Entwicklung >PHP-Tutorial >Wie verwende ich LIMIT in MySQL-vorbereiteten Anweisungen mit PHP richtig?

Wie verwende ich LIMIT in MySQL-vorbereiteten Anweisungen mit PHP richtig?

Linda Hamilton
Linda HamiltonOriginal
2024-12-18 01:01:09554Durchsuche

How to Properly Use LIMIT in MySQL Prepared Statements with PHP?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn