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

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-29 19:29:30844Durchsuche

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>

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>

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>

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>

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!

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