MySQL SELECT语句仅搜索表中的3个字段

时间:2012-11-18 15:16:04

标签: php mysql sql select

我无法使用表单中的用户输入搜索MySQL数据库表中的多个列。

数据库中的表称为车辆,有4个字段/列:年份,品牌,型号和选项

用户从我输入$ input变量的表单输入搜索条件。

以下是我的代码不起作用。它返回一个布尔错误:

(Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given)

$query = ("SELECT * FROM vehicles WHERE year LIKE '%$input%' OR make LIKE '%$input%' OR model LIKE '%$input%' OR option LIKE '%$input%'");

$result = mysql_query($query);

然而,当我从查询中删除最终的OR时,它工作正常,但只搜索年份,品牌和模型字段:

$query = ("SELECT * FROM vehicles WHERE year LIKE '%$input%' OR make LIKE '%$input%' OR model LIKE '%$input%'");

$result = mysql_query($query);

如何获取查询以搜索所有4个字段/列?我错过了什么?

是否有更简单的方法来搜索整个表(表中的所有列)以查找用户的输入?

非常感谢你能给我的任何帮助。

1 个答案:

答案 0 :(得分:3)

“option”是mysql中的保留字see here。因此,您的查询实际上失败并返回布尔值false而不是资源。重命名列或像这样使用“`”

$query = ("SELECT * FROM vehicles WHERE year LIKE '%$input%' OR make LIKE '%$input%' OR model LIKE '%$input%' OR `option` LIKE '%$input%'");

另外,请确保使用正确的转义以防范SQL Injection