我想通过添加“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%')";
表示任何内容%
(零个或多个字符),因此查询将查找以任何内容开头的任何名称,然后是您的搜索热词,然后以任何内容结尾。