Mysql查询错误,不等于

时间:2010-11-22 20:29:29

标签: sql mysql

如果标题是:$ title = wp_title('',0); - 查询不排除:AND posttitle<> “$标题”” 如果标题是例如:$ title ='test is the best'; - 查询会排除AND posttitle<> ''测试是最好的'“

 $query = mysql_query("SELECT posttitle, posturl, siteurl, MATCH (posttitle,posturl,siteurl) AGAINST ('$title') AS score FROM interlinks WHERE MATCH (posttitle,posturl,siteurl) AGAINST ('$title') AND `posttitle` <> '$title'");

2 个答案:

答案 0 :(得分:4)

你有一个拼写错误 - posttitle不需要单引号,请使用:

SELECT posttitle,  
       posturl, 
       siteurl, 
       MATCH (posttitle,posturl,siteurl) AGAINST ('$title') AS score 
  FROM interlinks 
 WHERE MATCH (posttitle,posturl,siteurl) AGAINST ('$title') 
   AND posttitle <> '$lowercasetitle'

使用单引号向SQL表明它正在处理字符串,而不是列引用。因此,与变量的比较是它不等于字符串'posttitle',而不是列中的值。

在MySQL中,反引号(`)是used for escaping registered keywords

SELECT posttitle,  
       posturl, 
       siteurl, 
       MATCH (posttitle,posturl,siteurl) AGAINST ('$title') AS score 
  FROM interlinks 
 WHERE MATCH (posttitle,posturl,siteurl) AGAINST ('$title') 
   AND `posttitle` <> '$lowercasetitle'

答案 1 :(得分:0)

通常,mysql中的字符串比较不区分大小写,因为默认情况下表使用latin1字符集和latin1_swedish_ci排序规则。要以区分大小写的方式对它们进行比较,请使用BINARY这样的操作数:

WHERE MATCH (posttitle,posturl,siteurl) AGAINST ('$title') 
AND BINARY posttitle != '$lowercasetitle'