私は、テーブルなどの中に複数の列と比較する検索フォームフィールドがあります。それだけのためにデータの行を見つけているようだが、私が作ったクエリが複数のLIKE比較を持っているMySQLクエリでの複数のLIKE比較? - MySQLの、PHP
+----------+-------+---------+------+------------+
| name | owner | species | sex | birth |
+----------+-------+---------+------+------------+
| Claws | Gwen | cat | m | 1994-03-17 |
| Bowser | Diane | dog | m | 1989-08-31 |
| Whistler | Gwen | cat | m | 1997-12-09 |
+----------+-------+---------+------+------------+
を最初の2つの列。
最初の比較は、 "名" し、 "所有者" "種" し、 "セックス" です。
最初の2つの列に一致する文字列を入力すると行が検索されますが、最後の列の1つに一致する文字列を入力すると何も返されません。ここで
はクエリです:
SELECT * FROM contact
WHERE name LIKE \"%$search%\"
OR owner LIKE \"%$search%\"
OR species LIKE \"%$search%\"
OR sex LIKE \"%$search%\"
GROUP BY name, owner,species, sex
私の唯一の推測では、あなたが使用することができますどのように多くの「OR」のMySQLはおそらく限界ということでしょうか?
ユーザーが入力した文字列が列データと一致する場合は、テーブルから行を返す必要があります。ここで
は
include("database.class.php");
//search string assigned from POST field
$search = $_POST['contact_search'];
$db = new database();
$db->select('quote_system');
$result = $db->query("SELECT * FROM contact WHERE name LIKE \"%$search%\" OR owner LIKE \"%$search%\" OR species LIKE \"%$search%\" OR sex LIKE \"%$search%\" GROUP BY name, second_name, owner, species, sex");
print_r($result);
while ($row = $db->fetch_assoc($result))
{
echo $row['name'];
echo $row['owner'];
echo $row['species'];
echo $row['sex'];
echo "<br/>";
}
のための私のPHPコードを包みなさいここに混乱をtheresのある問題を示すためにいくつかの例は以下のとおりです。
ユーザーは、文字列「爪」を入力 - >文字列の一致データで"name" column - >列がある行を出力する
ユーザーが入力する文字列 "m" - > stringは "sex"列のデータと一致します - >何も表示されません!
ありがとうございました!
Oh No.別のSQLi –
ちょうどヒント。これをしないでください。クエリには使用するインデックスがありません。つまり、フルテーブルスキャン*を何回も実行することができます。 – Layke
@Martin - SQLi? – kaleeway