搜索查询无效

时间:2016-09-22 15:59:52

标签: php mysql

我为多个字段编写了一个mysql查询,结果应匹配所有字段。以下是我的代码,

SELECT e.es_id, e.es_sex, e.service_type, e.working_name,  d.es_age, d.es_city, d.es_regional_city
FROM escorts AS e 
INNER JOIN escorts_details AS d ON e.es_id = d.es_id 
WHERE  es_sex LIKE '%" . $es_sex . "%' 
AND category LIKE '%" . $category  ."%' 
AND es_city LIKE '%" . $es_city  ."%' 
AND es_regional_city LIKE '%" . $es_regional_city  ."%'";

当我在填写所有字段后执行此代码时..

SELECT e.es_id, e.es_sex, e.service_type, e.working_name, d.es_age, d.es_city, d.es_regional_city
FROM escorts AS e 
INNER JOIN escorts_details AS d 
ON e.es_id = d.es_id 
WHERE es_sex LIKE '%male%' 
AND category LIKE '%waitresses%' 
AND es_city LIKE '%7%' 
AND es_regional_city LIKE '%%'

它仍然显示女性细节,如果您将看到被执行的查询,我已经填写了#34;男性" (es_sex LIKE'%male%')。

我不知道自己做错了什么。

请帮帮我。

感谢。

3 个答案:

答案 0 :(得分:2)

因为%代表任何字符串。所以在你的情况下,LIKE%男性%实际上可能意味着女性'其中' fe'正在取代第一个%。只需删除%并说出es_sex =' male',就像这样:

SELECT e.es_id, e.es_sex, e.service_type, e.working_name, d.es_age, d.es_city, d.es_regional_city
FROM escorts AS e 
INNER JOIN escorts_details AS d 
ON e.es_id = d.es_id 
WHERE es_sex ='male' 
AND category LIKE '%waitresses%' 
AND es_city LIKE '%7%' 
AND es_regional_city LIKE '%%'

答案 1 :(得分:0)

首先,您需要了解LIKE并且=不相等。在这种情况下LIKE(在两侧都有%)在特定列中的任何位置找到键时返回true。对于值男性%male%也可以实现,因为单词male存在于其中。

%符号表示可以有任何字符或字符组。

在这种情况下,您必须使用es_sex='male'

答案 2 :(得分:0)

我相信你会在where条件附近遇到语法错误。

  

尝试选择表名和'。'带有字段名称(table-name.field-name),如下所示

SELECT e.es_id, e.es_sex, e.service_type, e.working_name, d.es_age, d.es_city, d.es_regional_city FROM escorts AS e INNER JOIN escorts_details AS d ON e.es_id = d.es_id WHERE e.es_sex LIKE '%male%' AND e.category LIKE '%waitresses%' AND e.es_city LIKE '%7%' AND e.es_regional_city LIKE '%%'
  

我已将护送表名称包含为e.field-names,请参阅与表名对应的字段名称。

我希望你能得到正确答案。给我你的反馈。快乐的编码。