2010-11-22 5 views
1

Si le titre est: $ title = wp_title ('', 0); - requête ne pas exclure: ET posttitle <> '$ title' " Si le titre est par exemple: $ title = 'test est le meilleur'; - requête exclut AND posttitle <> '' test est le meilleur '"Mysql erreur de requête, ne correspond pas à

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

Répondre

4

Vous avez une faute de frappe - posttitle n'a pas besoin de guillemets simples, utilisez:

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

Putting des guillemets simples indique à SQL qu'il a affaire à une chaîne, pas une référence de colonne. Donc, la comparaison avec votre variable était qu'elle n'égalait pas la chaîne 'posttitle', plutôt que la valeur dans la colonne.

En MySQL, les apostrophes inverses (`) sont 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

Il fonctionne si u utiliser une autre variable au lieu de $ lowercasetitle ... Je pense qu'il est quelque chose de mal avec la variable lowercasetitle de $ - VOICI LE CODE: $ title = wp_title ('', 0); $ lowercasetitle = strtolower ($ title); echo $ lowercasetitle; – webmasters

+0

$ lowercasetitle est une chaîne – webmasters

+0

@webmasters: Que renvoie echo wp_title ('', 0) '? –

0

En général, les comparaisons de chaînes dans mysql ne sont pas sensibles à la casse, car les tables par l'utilisation par défaut latin1 jeu de caractères et latin1_swedish_ci collation. Pour les amener à comparer dans un cas de manière sensible, utilisez l'opérande BINARY comme ceci:

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