実現したいこと
PHPでPDOを使用したDBへの検索SQL実行の際、LIKE検索で \(バックスラッシュ)を使用したいです。
環境 : PHP8.1, MySQL 5.7
SELECT * FROM table1
WHERE col1
LIKE "%\\\\%"
phpMyAdminのSQL実行ツールでは上記のように、\を2重エスケープすると結果が期待通りとなるのが、
PHPプログラム上で、同様なエスケープ処理を行ってSQLを実行しても、期待通りの検索結果となりません。
記載したコードは以下になりますが、誤っている箇所がありましたらご教示いただけませんでしょうか?
// $keyword 入力されたキーワード if (preg_match("/^\\\\$/", $keyword)) { $keyword = str_replace("\\", "\\\\\\\\", $keyword); } $value = '%' . $keyword . '%'; $sql = "SELECT * FROM table1 WHERE col1 LIKE :value"; $stmt = $this->connect->prepare($sql); $stmt->bindValue(":value", $value, \PDO::PARAM_STR); $result = $stmt->execute();
回答1件
あなたの回答
tips
プレビュー