Heim >Datenbank >MySQL-Tutorial >Wie verwende ich den LIKE-Operator mit PDO in PHP richtig?
LIKE-Abfragen mit PDO implementieren
Bei Verwendung des LIKE-Operators in Structured Query Language (SQL) wird das Prozentzeichen (%) verwendet als Platzhalterzeichen, um mit null oder mehr Vorkommen einer Teilzeichenfolge übereinzustimmen. In PHP mit PDO (PHP Data Objects) kann der LIKE-Operator verwendet werden, um einen Mustervergleich mit einer Datenbankspalte durchzuführen.
Problemformulierung
Ein Benutzer stößt auf ein Problem beim Versuch, den LIKE-Operator in PDO zu verwenden. Obwohl sichergestellt wurde, dass die Variablenwerte die gewünschten Suchbegriffe enthalten und die Funktionalität anderer PDO-Abfragen überprüft wurde, gibt die LIKE-Abfrage keine Ergebnisse zurück.
Korrekte Abfragesyntax
Zur Lösung Um das Problem zu lösen, ist es wichtig, die abzugleichenden Variablenwerte mit dem Prozent-Platzhalter (%) in das $params-Array einzuschließen, anstatt sie in die Abfragezeichenfolge selbst einzubetten. Hier ist die korrekte Syntax:
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%"); $stmt = $handle->prepare($query); $stmt->execute($params);
Erklärung
In der ursprünglichen Abfrage wurden die %-Platzhalter in die Abfragezeichenfolge eingebettet. PDO bereitet die Abfrage jedoch vor, indem es die Werte in Anführungszeichen setzt, was zu einer Abfrage wie folgt führt:
SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
Diese falsche Syntax verhindert, dass die %-Platzhalter ordnungsgemäß als Platzhalter funktionieren, was dazu führt, dass keine Übereinstimmungen gefunden werden. Indem stattdessen die Platzhalter in das Array $params eingefügt werden, werden die Prozentzeichen nicht in Anführungszeichen gesetzt, sodass sie ihre beabsichtigte Wildcard-Matching-Funktionalität ausführen können.
Das obige ist der detaillierte Inhalt vonWie verwende ich den LIKE-Operator mit PDO in PHP richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!