Rendre sensible à la casse fetch()

dsfhe -  
avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Dans ce code :
$req->closeCursor();
$reponse = $bdd->query('SELECT * FROM table WHERE toto = 'a'');
if($donnees = $reponse->fetch()) {
	echo $donnees['id'];
}
$reponse->closeCursor();


Que ce soit en requête : SELECT * FROM table WHERE toto = 'a' OU SELECT * FROM table WHERE toto = 'A'
J'obtiens tout le temps la même chose, comment rendre sensible à la casse ?

Merci d'avance.

2 réponses

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Salut,

    Essaie avec ceci :
    SELECT * FROM table WHERE toto = 'a' COLLATE latin1_bin
    (ou utf8_bin ou autre selon l'interclassement que tu utilises).
    0
  2. dsfhe
     
    Merci, à la place de le mettre latin1_bin dans la requête SQL, je directement modifié l'interclassement dans phpMyAdmin et j'ai mis latin1_bin.

    Mais latin1_bin çz correspond à quoi ? Quels caractères sont acceptés ?
    Car dans ma table, il y a des URL (tout les caractères des URL) et des id composés de chiffres et lettres avec minuscules et majuscules.
    0
    1. dsfhe
       
      Je viens de me rendre compte qu'avec latin1_bin dans le champ des URL il y a ça et non l'URL : [BLOB - 86o]
      0
    2. dsfhe
       
      Je ne sais pas quel collation prendre pour un minimiseur d'URL. Pour enregistré des URL et des ID sensible à la casse et et des chiffres.
      0
    3. dsfhe
       
      Voici ma table actuel :
      CREATE TABLE 'MinimiseurURL' (
      'id' INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
      'uniqid' VARCHAR( 13 ) NOT NULL ,
      'url' TEXT NOT NULL
      ) ENGINE = MYISAM ;


      id : id autoincrementable
      uniqid : id en base 62
      url : URL à minimiser
      0
    4. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
       
      latin1_bin correspond à l'ISO-8859-1, le jeu de caractère souvent uilisé en français.
      Contrairement à latin1_general_ci (case insensitive), il est sensible à la casse.

      Ton problème me paraît étrange, surtout qu'en effectuant une recherche sur Google avec « "BLOB - 86o" » (avec les guillemets pour l'expression exacte), on obtient un seul résultat : ce sujet.
      0
    5. dsfhe
       
      Le 86o change en fonction de la taille de l'URL.
      Je pense utiliser le latin1_general_cs, pour les URL il est correcte ?
      0