bl4ck120:
私は、次のクエリを使用して簡単なPHPの検索をしようとしています。クエリは最初の単語だけの結果を与えるしかし、これは完璧に動作します。単一のクエリを使用して、すべての3つの単語の組み合わせの結果を取得する方法があるでしょうか?
$stmt = $pdo->prepare("SELECT * FROM walldb WHERE (wallname LIKE :searchq1 OR :searchq2 OR :searchq3) LIMIT :stat, :limt");
GMB:
あなたは繰り返す必要がありexpr like val
、パターンを:
WHERE wallname LIKE :searchq1 OR wallname LIKE :searchq2 OR wallname LIKE :searchq3
あなたの元のコードで何happendsは、それは次のように解釈されていることです。
WHERE
(wallname LIKE :searchq1)
OR (:searchq2)
OR (:searchq3)
彼らが条件であるかのように、基本的には最後の2つの検索用語は、ブール値コンテキストで評価されています。検索用語の一つが始まる場合1
、それは真と評価された(そして、テーブルのすべての行が返されます)。他でもない開始があれば1
、条件が偽である、したがって、最初の条件は、(あなたが見ているものである)場に出ます。