php mysql AJAX de jquery autocomplete de la casse

dans mon script php,

$names = $_GET['part'];
$result = mysql_query("SELECT * FROM  namestable where names LIKE'%$names%' LIMIT 10");
while ($row = mysql_fetch_assoc($result)) {
        $colors[]=$row['publishers'];
}

vérifie les correspondances et fonctionne bien.

mais supposons que ma table ait un nom Alfred, la suggestion Apparaîtra seulement si je tape Alfr et n'apparaît pas si je tape alfr

2
demandé sur hakre 2011-02-13 18:34:43

1 réponses

l'exemple que vous avez fourni fonctionnera si vous utilisez une collation insensible à la casse telle que utf8_general_ci . (Voir la section manuel MySQL support de jeu de caractères pour plus d'informations.)

alternativement, vous pouvez simplement utiliser la fonction inférieur comme suit:

$names = strtolower(mysql_real_escape_string($_GET['part']));
$result = mysql_query("SELECT * FROM namestable WHERE names LIKE LOWER('%$names%') LIMIT 10");

soit dit en passant, si vous tentez d'attraper des différences au-delà de simples changements de cas, vous pouvez également utiliser MySQL SOUNDEX fonction pour obtenir et trouver une correspondance pour des cordes qui sonne similaire.

incidemment, vous devez utiliser mysql_real_escape_string sur votre variable $names, ou (mieux encore) utiliser des déclarations préparées via les interfaces mysqli ou PDO.

1
répondu John Parker 2011-02-13 15:38:52