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
Freigeben: 2024-12-06 18:51:13
Original
535 Leute haben es durchsucht

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 ?, ?
Nach dem Login kopieren

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();
Nach dem Login kopieren

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);
Nach dem Login kopieren

Verwendung von Positionsplatzhaltern:

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

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage