Verwendung von Platzhaltern mit vorbereiteten PDO-Anweisungen: Warum schlägt bindParam() fehl und wie verwendet man bindValue() oder vorformatierte Zeichenfolgen?

Linda Hamilton
Freigeben: 2024-10-29 19:29:30
Original
909 Leute haben es durchsucht

How to Use Wildcards with PDO Prepared Statements: Why bindParam() Fails and How to Use bindValue() or Pre-Formatted Strings?

Verwendung von Platzhaltern mit vorbereiteten PDO-Anweisungen

Das Ausführen von SQL-Abfragen mit Platzhaltern unter Verwendung von vorbereiteten PDO-Anweisungen (PHP Data Objects) kann eine Herausforderung sein. Dieser Artikel befasst sich mit dem Problem und bietet Lösungen.

Die gestellte Frage besteht darin, alle Zeilen in der gc_users-Tabelle mit einem Platzhalter im Namensfeld zu finden, was ausgedrückt werden kann als:

<code class="sql">SELECT * FROM `gc_users` WHERE `name` LIKE '%anyname%';</code>
Nach dem Login kopieren

Wann Beim Versuch, diese Abfrage mit vorbereiteten Anweisungen auszuführen, wurden zwei erfolglose Ansätze gewählt:

<code class="php">$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name");
$stmt->bindParam(':name', "%" . $name . "%");
$stmt->execute();

$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE '%:name%'");
$stmt->bindParam(':name', $name);
$stmt->execute();</code>
Nach dem Login kopieren

Die bevorzugte Lösung beinhaltet die Verwendung von bindValue() anstelle von bindParam():

<code class="php">$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name");
$stmt->bindValue(':name', '%' . $name . '%');
$stmt->execute();</code>
Nach dem Login kopieren

Alternativ as Wie in der bereitgestellten Antwort vorgeschlagen, kann auch bindParam() verwendet werden:

<code class="php">$name = "%$name%";
$query = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` like :name");
$query->bindParam(':name', $name);
$query->execute();</code>
Nach dem Login kopieren

Diese Lösungen zeigen, wie Platzhalter erfolgreich mit PDO-vorbereiteten Anweisungen verwendet werden.

Das obige ist der detaillierte Inhalt vonVerwendung von Platzhaltern mit vorbereiteten PDO-Anweisungen: Warum schlägt bindParam() fehl und wie verwendet man bindValue() oder vorformatierte Zeichenfolgen?. 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