Bonjour,
Je souhaite effectuer une requête sensible à la casse.
La table est comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
CREATE TABLE `users` (`US_ID` smallint(8) NOT NULL auto_increment,`US_Nom` varchar(50) collate utf8_unicode_ci NOT NULL default '',
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci PACK_KEYS=0 AUTO_INCREMENT=317 ;
Le début de mon flux HTML est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<title>xxx</title>
</head>
<body>
J'ai une fonction "requete()" pour accéder à la base ; je la donne puisqu'il y a dedans "SET NAMES UTF8" qui peut influencer ma problématique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
function requete($query) {
	$nom_base = 'bobi';
	$identifiant_base = 'root';
	$mdp_base = '';
	$nom_du_serveur = 'localhost';
	$connect = mysql_connect($nom_du_serveur, $identifiant_base, $mdp_base);
	mysql_select_db($nom_base);
	mysql_query("SET NAMES UTF8"); 
	$result = mysql_query($query) or die("Erreur mysql n°".mysql_errno()." :".mysql_error());
	mysql_close($connect);
	return $result;
}
Enfin, je fais le test suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
$a = 'prof7';
$b = 'pRof7';
$req = mysql_fetch_array(requete("SELECT US_ID FROM users WHERE US_Nom='$a' COLLATE UTF8_BIN"));
echo 'COUNT = '.count($req['US_ID']).'<br />';
echo 'ID = '.$req['US_ID'];
Sachant qu'en base j'ai "pRof7", le test donne COUNT = 0 pour $a et COUNT = 1 pour $b.
Donc ça marche, mais j'ai bricolé un peu "à l'aveugle" le COLLATE UTF8_BIN.
En conséquence, je me demande si, malgré tout, ma syntaxe est correcte et, dans la négative, ce qu'il y aurait d'autre.
Par avance merci pour votre expertise.