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

Wie verwende ich LIMIT in MySQL-vorbereiteten Anweisungen mit PDO korrekt?

DDD
Freigeben: 2024-11-27 15:57:14
Original
1014 Leute haben es durchsucht

How to Correctly Use LIMIT in MySQL Prepared Statements with PDO?

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

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

was zu einem Analysefehler führt.

Lösungen

Es gibt mehrere Möglichkeiten, dieses Problem zu beheben :

  • Parameter einzeln binden: Geben Sie jeweils den Typ an Parameter mit bindParam():
$comments->bindParam(1, $post, PDO::PARAM_STR);
$comments->bindParam(2, $min, PDO::PARAM_INT);
$comments->bindParam(3, $max, PDO::PARAM_INT);
Nach dem Login kopieren
  • Parameter aus der Abfrage ausschließen: Entfernen Sie die Parameter $min und $max aus der Abfrage und geben Sie sie als Teil der an Abfrage:
$query = sprintf('SELECT id, content, date
    FROM comment
    WHERE post = ?
    ORDER BY date DESC
    LIMIT %d, %d', $min, $max);
Nach dem Login kopieren
  • Emulierte Vorbereitungen deaktivieren: Deaktivieren Sie emulierte Vorbereitungen im MySQL-Treiber:
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
Nach dem Login kopieren

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage