Heim >Datenbank >MySQL-Tutorial >Wie verwende ich Platzhalter ordnungsgemäß mit PDO-vorbereiteten Anweisungen in MySQL?

Wie verwende ich Platzhalter ordnungsgemäß mit PDO-vorbereiteten Anweisungen in MySQL?

DDD
DDDOriginal
2024-11-28 21:32:15312Durchsuche

How to Properly Use Wildcards with PDO Prepared Statements in MySQL?

Verwendung von Platzhaltern in PDO-vorbereiteten Anweisungen

Das Ausführen von MySQL-Abfragen, die Platzhalter wie % verwenden, um eine beliebige Anzahl von Zeichen abzugleichen, kann eine Herausforderung darstellen bei Verwendung von PDO-vorbereiteten Anweisungen. In diesem Artikel geht es darum, wie Sie Platzhalter mit vorbereiteten Anweisungen effektiv nutzen können.

Ursprüngliche Abfrage

Das ursprüngliche Ziel bestand darin, die folgende Abfrage auszuführen:

SELECT * FROM `gc_users` WHERE `name` LIKE '%anyname%'

Fehlgeschlagene Versuche

Es wurden zwei erfolglose Nutzungsversuche unternommen Vorbereitete Anweisungen:

$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();

Lösung

Das Problem liegt in der Verwendung von bindParam(). Um Platzhalter in vorbereiteten Anweisungen korrekt zu verwenden, sollten Sie bindValue() verwenden. Der folgende Code zeigt den richtigen Ansatz:

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

Alternative

Eine weitere praktikable Option besteht darin, den Code so zu ändern, dass bindParam() auf folgende Weise verwendet wird:

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

Das obige ist der detaillierte Inhalt vonWie verwende ich Platzhalter ordnungsgemäß mit PDO-vorbereiteten Anweisungen in MySQL?. 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