2010-11-22 83 views
1

如果标题是:$ title = wp_title('',0); - 查询不排除:AND posttitle <>'$ title'“ 如果标题是例如:$ title ='test is best'; - query does exclude AND posttitle <>''test is the best''Mysql查询错误,不等于

$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'"); 

回答

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' 
+0

如果u使用另一个变量,而不是$它工作lowercasetitle ......我认为这是什么毛病变量$ lowercasetitle - 这里是代码:$ title = wp_title('',0); $ lowercasetitle = strtolower($ title); echo $ lowercasetitle; – webmasters 2010-11-22 20:53:50

0

通常,在MySQL字符串比较不因为默认使用的表latin1字符集和latin1_swedish_ci归类区分大小写。为了让他们在大小写敏感的方式相比,使用BINARY操作是这样的:

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