Heim >Datenbank >MySQL-Tutorial >Wie verwende ich Bind-Variablen in einer SQL LIMIT-Klausel richtig?
Bind-Variablen in der SQL LIMIT-Klausel korrekt verwenden
Frage:
Beim Versuch, mit bindValue
die Werte skip
und max
der LIMIT-Klausel festzulegen, ist die generierte SQL-Anweisung ungültig, da den Variablen einfache Anführungszeichen hinzugefügt werden. Wie kann dieses Problem gelöst werden?
Antwort:
Um dieses Problem zu lösen, wandeln Sie den Variablenwert in eine Ganzzahl um, bevor Sie ihn an die Funktion bindValue
übergeben. Dadurch wird sichergestellt, dass keine einfachen Anführungszeichen hinzugefügt werden, wodurch SQL-Syntaxfehler behoben werden.
Das Folgende ist der geänderte Code:
<code class="language-php">$fetchPictures = $PDO->prepare("SELECT * FROM pictures WHERE album = :albumId ORDER BY id ASC LIMIT :skip, :max"); $fetchPictures->bindValue(':albumId', (int)$_GET['albumid'], PDO::PARAM_INT); // 强制转换为整数 if(isset($_GET['skip'])) { $fetchPictures->bindValue(':skip', (int) trim($_GET['skip']), PDO::PARAM_INT); } else { $fetchPictures->bindValue(':skip', 0, PDO::PARAM_INT); } $fetchPictures->bindValue(':max', (int)$max, PDO::PARAM_INT); // 强制转换为整数 $fetchPictures->execute() or die(print_r($fetchPictures->errorInfo())); $pictures = $fetchPictures->fetchAll(PDO::FETCH_ASSOC);</code>
Der Schlüssel besteht darin, die Variablen $_GET['albumid']
und $max
vor bindValue
explizit in einen Ganzzahltyp zu konvertieren. Dadurch wird vermieden, dass PDO sie als Zeichenfolgen behandelt und einfache Anführungszeichen hinzufügt, was zu Syntaxfehlern in der LIMIT-Klausel führt. Die Funktion trim()
wird verwendet, um alle zusätzlichen Leerzeichen in der Variablen $_GET['skip']
zu entfernen.
Das obige ist der detaillierte Inhalt vonWie verwende ich Bind-Variablen in einer SQL LIMIT-Klausel richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!