Ich versuche, eine Schlüsselwortsuche mit PDO vorbereiteten Anweisungen zu schreiben. Im Idealfall möchte ich den LIKE-Operator verwenden, um innerhalb des Feldwerts nach einer Teilzeichenfolge zu suchen. Hier ist mein Code:Verwenden des LIKE-Operators mit% für eine Schlüsselwortsuche mit vorbereiteten PDO-Anweisungen
$statement = $this->db->prepare("select * from whatever where title like ? or author like ?");
$statement->execute(array("%$titleKeyword%","%$authorKeyword%"));
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
Leider ist $ Zeilen immer leer, wenn ich dies versuche. Wenn ich jedoch die SQL in phpMyAdmin kopiere und für jedes der? Symbole, es funktioniert gut (ich bekomme Ergebnisse, wenn das verwendete Schlüsselwort existiert).
Ich habe auch versucht, den folgenden Code:
$statement = $this->db->prepare("select * from whatever where title like :titleKeyword or author like :authorKeyword");
$statement->bindValue(":titleKeyword", '%'.$titleKeyword.'%', PDO::PARAM_STR);
$statement->bindValue(":authorKeyword", '%'.$authorKeyword.'%', PDO::PARAM_STR);
$statement->execute();
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
ich in einer anderen Frage gelesen hatte, die Sie angeblich das% enthält, wenn die Parameter zu binden, nicht in dem SQL selbst (pre-prepared Statements), aber das funktioniert nicht.
Ich könnte einfach nur das Schlüsselwort direkt in das SQL einfügen (nachdem ich eine Bereinigung vorgenommen habe), aber ich möchte bei den vorbereiteten Anweisungen bleiben. Jede Hilfe würde sehr geschätzt werden.
Nur ein kurzer Schein und das funktioniert gut (PHP 5.3.5) ~ Sie möchten definitiv Ihre '%' beim Binden von Werten hinzufügen. Vielleicht Probleme mit Ihrem $ titleKeyword & $ authorKeyword? – TerryProbert
Leider nein. Ich habe das überprüft, bevor ich hier gepostet habe. – Randy