【发布时间】:2016-02-07 20:19:52
【问题描述】:
我正在为一个搜索引擎编写一个脚本,其中所有字段都需要能够自己提交信息,或者与其他字段结合使用。这些字段是名称、城市、州、邮政编码、国家/地区、Category_1。代码如下:
"SELECT * FROM table WHERE Name LIKE '%$get_name%'
OR City LIKE '%$get_city%'
OR State LIKE '%$get_state%'
OR ZIP LIKE '%$get_zip%'
OR Country LIKE '%$get_country%'
OR Category_1 LIKE '%$get_category1%'
LIMIT 0, 10";
如果我从输入中回显所有变量,则它们都正确。但是,无论用户输入是什么,查询都会产生相同的结果。有什么建议么?好像是MYSQL查询本身的问题。
【问题讨论】:
-
将查询放入变量并回显。确认这些值不为空。
-
只是为了确保它是有意的:它们都是 OR - 所以任何参数为空白,然后它将返回所有数据。
-
@smozgur 我误解了 OR 条件的作用。你能建议一个更好的条件来研究吗?
-
您是否要同时让所有条件字段匹配?那么你需要AND。然后你仍然应该检查空变量。更好的主意,使用“有效”发布的变量创建您的 SQL 字符串。如果您希望所有字段同时匹配,请使用 AND。如果您无法使其正常工作,我可以为此提供示例代码。
-
哦!它已经被下面的另一个用户发布为答案。所以你现在应该没问题,但我仍然坚持你需要 AND。原因是:它会返回所有城市,即使用户使用 OR 为请求的 $get_category1 输入了特定城市。我想这已经足够解释了。