2010-11-22 82 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'