Ma table "info" a quatre colonnes nom d'utilisateur, latitude, longitude et nom de fichier. J'envoie une requête d'android (client) pour chercher un nom de fichier particulier pour un ensemble donné de combinaisons nom d'utilisateur, latitude et longitude, voici le php (côté serveur) du code qui gère la requête ...question de requête mysql
mysql_connect("localhost", "bb", "707") or die(mysql_error());
mysql_select_db("test1") or die(mysql_error());
$usrnm = $_REQUEST["username"];
$lat = $_REQUEST["lat"];
$lng = $_REQUEST["lng"];
$query = sprintf("SELECT filename FROM info WHERE username = '%s'"
,mysql_real_escape_string($usrnm)
,"AND latitude = %s",mysql_real_escape_string($lat)
,"and longitude = %s",mysql_real_escape_string($lng));
$result = mysql_query($query)
or die(mysql_error());
$row = mysql_fetch_array($result);
echo $row["filename"];
Voici le problème: Si j'utilise la requête ci-dessus, le nom de fichier renvoyé est basé uniquement sur le nom d'utilisateur et la latitude et les longitudes ne sont pas prises en compte. en bref seulement la première paire "nom = valeur" après la clause where est utilisée pour obtenir le nom de fichier ... pourquoi est-ce ??? Est-ce que la requête est incorrecte ou est-il une autre façon de le faire .... J'utilise MYSQL
Encore une observation: Si je hardcode les valeurs pour le nom d'utilisateur, la latitude et la longitude, alors il retourne le bon nom de fichier ...
Notez que votre code semble sûr de SQL-injection, mais pas parce que vous ne parvenez pas à joindre votre $ vars entre guillemets simples '' 'dans la chaîne de requête. – Johan
@Johan: Bonne prise, j'aurais dû le remarquer à l'époque quand j'ai posté ma réponse. – thirtydot