8796 sujets

Développement web côté serveur, CMS

Bonjour,

Mes tables sont encodées en utf8_unicode_ci.
Or, sur mes requêtes, MYSQL rend la requête sensible à la case, comment dois-je m'y prendre pour ignorer la case?


SELECT node.nid AS nid,
node.title AS title

FROM node node
WHERE (node.type in ('pageproduits', 'pagearticles', 'product', 'tvacinqcinq'))
AND (node.status <> 0)
AND title LIKE '%" . $queryString . "%'
ORDER BY node.type ASC
LIMIT 50


Merci à vous Smiley cligne
Modifié par Guillem.C (26 Apr 2010 - 11:10)
Salut,

bizarre que tu es du faire ça. je me demande pourquoi. (peut-être a cause de l'unicode ? )

a priori le _ci veut dire insensible à la casse et c'est _cs qui est sensible.

mais il suffit d'un champ sensible pour que toute l'opération le devienne.


Enfin ta méthode marche. merci de nous en avoir fait part.
Modifié par CPascal (26 Apr 2010 - 13:33)
Je ne suis pas familier des requêtes SQL, je suis en pleine phase d'apprentissage.
Étrange en effet, je me demande si PHP y est pour quelque chose (j'en doute). Je vais essayer la requête en ligne de commande pour voir si un programme tiers et la cause de cet étrangeté.

EDIT : Oui, ça passe, donc, cela veut dire que c'est la ligne ci-dessous qui pause problème :


<?php
$queryString = mysql_real_escape_string($_POST['queryString']);
?>


Je _POST depuis AJAX

EDIT2 : J'ai trouvé, ça vient de la couche d'abstraction de ma base de donnée drivée par Drupal, il fallait doubler le symbole % de cette façon :


AND title LIKE '%%" .$queryString . "%%'

Modifié par Guillem.C (26 Apr 2010 - 18:32)
Essaie de jeter un oeil à ceci.

--- édit -----
... ça t'éviterait peut-être d'avoir à forcer la casse en majuscule.
Modifié par phpdoesnotcare (26 Apr 2010 - 16:50)
A noté que je n'ai plus a forcer la majuscule, c'est un problème de couche Drupal qui j'en suis sûr fera l'objet d'un patch.

Merci pour la doc Smiley cligne
Ok ok. Tu aurais dû être mon cobaye, en fait, n'ayant jamais essayé cette méthode encore, alors que ça m'intéresse. ;P