我为多个字段编写了一个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%')。
我不知道自己做错了什么。
请帮帮我。
感谢。
答案 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,请参阅与表名对应的字段名称。
我希望你能得到正确答案。给我你的反馈。快乐的编码。