2010-11-22 9 views
1

タイトルが$ title = wp_title( ''、0); - クエリは除外していない:AND posttitle <>「$タイトル」」のタイトルは、例えばある場合 は:$タイトル= 『テストがベストです』; - クエリは除外しないとposttitle <> 『』はテストが最善である」」Mysqlのクエリエラー。

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単一引用符は必要ありません -

$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'と等しくないということでした。 MySQLでは

、バッククォート( `)はused for escaping registered keywordsです:デフォルトの使用によるテーブルはlatin1文字セットとlatin1_swedish_ci照合ので

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);エコー$ lowercasetitle; – webmasters

+0

$ lowercasetitleは文字列です – webmasters

+0

@webmasters: 'echo wp_title( ''、0)'は何を返しますか? –

0

は一般的に、MySQLでの文字列比較は大文字と小文字を区別しません。このようなBINARYオペランドを使用し、それらは大文字と小文字を区別の方法で比較することで取得するには:

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