Heim >Datenbank >MySQL-Tutorial >Wie funktioniert das LIMIT-Schlüsselwort von MySQL mit vorbereiteten Anweisungen und Parameterbindung?

Wie funktioniert das LIMIT-Schlüsselwort von MySQL mit vorbereiteten Anweisungen und Parameterbindung?

Linda Hamilton
Linda HamiltonOriginal
2024-12-06 18:51:13487Durchsuche

How Does MySQL's LIMIT Keyword Work with Prepared Statements and Parameter Binding?

So funktioniert das Schlüsselwort LIMIT mit vorbereiteten Anweisungen in MySQL

Das Schlüsselwort LIMIT in MySQL wird verwendet, um die Anzahl der von einem SELECT zurückgegebenen Zeilen zu beschränken Stellungnahme. Es werden zwei ganzzahlige Argumente benötigt: ein Offset und ein Limit.

Im folgenden Beispiel wird die LIMIT-Klausel verwendet, um die ersten 10 Zeilen aus der Kommentartabelle auszuwählen, sortiert nach der Datumsspalte in absteigender Reihenfolge:

SELECT id, content, date
FROM comment
WHERE post = ?
ORDER BY date DESC
LIMIT ?, ?

Um diese Abfrage mithilfe einer vorbereiteten PDO-Anweisung auszuführen, würden Sie die drei Abfrageparameter an die entsprechenden Daten binden Typen:

$query = $db->prepare($sql);
$query->bindParam(1, $post, PDO::PARAM_STR);
$query->bindParam(2, $min, PDO::PARAM_INT);
$query->bindParam(3, $max, PDO::PARAM_INT);
$query->execute();

Wenn Sie jedoch versuchen, diese Abfrage mit aktivierten emulierten Vorbereitungen auszuführen (die Standardeinstellung für den MySQL-PDO-Treiber), wird ein Fehler auftreten. Dies liegt daran, dass der MySQL-Treiber den zweiten und dritten Abfrageparameter automatisch in Zeichenfolgen umwandelt, was dazu führt, dass die LIMIT-Klausel fehlschlägt.

Um dieses Problem zu beheben, können Sie entweder emulierte Vorbereitungen deaktivieren oder stattdessen Positionsplatzhalter verwenden benannte Platzhalter in Ihrer Abfrage.

Emuliert deaktivieren Bereitet vor:

$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

Verwendung von Positionsplatzhaltern:

SELECT id, content, date
FROM comment
WHERE post = ?
ORDER BY date DESC
LIMIT ? OFFSET ?
$query = $db->prepare($sql);
$query->execute([$post, $min, $max]);

Das obige ist der detaillierte Inhalt vonWie funktioniert das LIMIT-Schlüsselwort von MySQL mit vorbereiteten Anweisungen und Parameterbindung?. 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