dprh34164 2016-09-22 15:59
浏览 37

搜索查询无效

I have coded a mysql query for multiple fields, and result should match all the fields. Below is my code,

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  ."%'";

and when I m executing this code after filling all the fields..

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 '%%'

Its still showing female details, if you will see the excuted query, i have filled "male" (es_sex LIKE '%male%').

I don't know what is I m doing wrong.

Please help me.

Thanks.

  • 写回答

3条回答 默认 最新

  • douji9184 2016-09-22 16:08
    关注

    It's because % represents any string of characters. So in your case LIKE %male% actually could mean 'female', where 'fe' is being put in place of the first %. Just remove % and say es_sex = 'male', like this:

    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 '%%'
    
    评论

报告相同问题?