2015-11-25 44 views
0
$query = " 
    SELECT distinct count(*) as num 
    FROM table1 ge 
    INNER JOIN table 2 ad 
    ON ge.ID = ad.ID 
    WHERE ge.ID = ad.ID AND ge.field LIKE '".mysql_real_escape_string($_REQUEST['search'])."%' 
    AND ge.field not like '%word%' 
    order by ge.field ASC" 

或者在MySQL不喜欢的SELECT语句不返回正确的结果

$query = " 
    SELECT * 
    FROM table1 ge 
    INNER JOIN table 2 ad 
    ON ge.ID = ad.ID 
    WHERE ge.ID = ad.ID AND ge.field LIKE '".mysql_real_escape_string($_REQUEST['search'])."%' 
    AND ge.field not like '%word%' 
    order by ge.field ASC" 

似乎无法摆脱此查询正确的结果,不应该显示与$word任何记录?任何帮助非常赞赏...

感谢

+0

'$ word'是变量还是字符串''word''? –

+0

btw您的第一个查询看起来很奇怪,您可以在没有'group by'的情况下执行'COUNT()',但是您不需要'DISTINCT'。所以,如果你是担心你缺少多个结果'集团BY' –

回答

0

最好的办法是你调试的是你的变量的值,并尝试直接在数据库中执行。

看起来像您尝试使用'word'为字符串,而不是将它作为一个变量。

$query = " 
    SELECT * 
    FROM table1 ge 
    INNER JOIN table 2 ad 
    ON ge.ID = ad.ID 
    WHERE ge.ID = ad.ID AND ge.field LIKE '".mysql_real_escape_string($_REQUEST['search'])."%' 
    AND ge.field not like '%".$word."%' 
    order by ge.field ASC" 
+0

是的,它是一个字符串和运行通过我phpAdmin“不喜欢”的时候,响应是4,它是发现后查询10之前预期的记录,但当我通过使用“select query”运行相同的时候,仍然没有什么区别。 $ str ='keyword'; “select * from table where id = $ id and field not like'%str_word%'”不应该显示任何记录。我很为难,不知道如果事情是冲突或压倒一切...谢谢 – user1971796

0

Mysql语法查询看起来不错,可以忽略包含“word”的记录。 然而,每个问题,它看起来像“$ word”是一个变量,你想忽略包含$ word的值的记录。找到建议的编辑如下。

$query = " 
    SELECT * 
    FROM table1 ge 
    INNER JOIN table 2 ad 
    ON ge.ID = ad.ID 
    WHERE ge.ID = ad.ID AND ge.field LIKE '".mysql_real_escape_string($_REQUEST['search'])."%' 
    AND ge.field not like '%".$word. "%' 
    order by ge.field ASC" 
+0

试过上面的查询和相同的结果,所有的记录都显示,由于 – user1971796

+0

偶试过直串用于测试目的“和ge.field不喜欢“ %string%',但它在mysql中正常工作,继续我的测试。 – user1971796

+0

你可以尝试打印$ query变量并尝试在mysql中运行生成的查询吗? –