「OR」ステートメントを追加してクエリを実行したい。以下にあるものを使用しても、すべてのエントリが表示されるわけではありません。私は何が間違っているのですか?
//$q = search variable;
$sql = "SELECT name, id_code from codes WHERE (id_code = '$q') OR (name='$q')";
$sql = "SELECT name, id_code from codes WHERE (id_code = '$q') OR (name='$q')";
$sql = "SELECT name, id_code from codes WHERE (id_code = '$q' OR name='$q')";
$sql = "SELECT name, id_code from codes WHERE id_code = '$q' OR name='$q'";
これらはすべて同じ結果になります。
試したことはありますSELECT name, id_code from codes WHERE id_code = '$q' OR name='$q'
か(つまり、括弧なしで)?
このコードは正しいです。それが機能しない理由は、干し草の山で針が見つからなかったためです。
これは、id_code
列が数値列であるか、列の値がゼロで埋められているか、変数がクエリに渡されていないことが原因である可能性があります。
変数をチェックして、クエリをエコーすることで変数が渡されているかどうかを確認し、フィールドのデータ型を確認します。
フィールドが数値の場合、引用符なしで割り当てまたは比較できます。
また、列の一部を検索する場合は、演算子を演算子name
に変更する必要があります。=
like
$sql = "SELECT name, id_code from codes WHERE (id_code = '$q') OR (name like '%$q%')";
は%
何でも(ゼロ以上の文字)を意味するので、クエリは何かで始まり、検索サーム、そして何かで終わる名前を探します。