Probleme avec requete SQL

Bonjour a tous,

Voila mon ptit bout de code d’abord :

Puis un apercu de ce qu’il y’a dans base de données :

Puis la reponse du mysql_error() quand je fais la recherche sur la lettre b (pour exemple)

A moins d’etre un imbecile je ne vois vraiment pas ou est le probleme… je ne vois vraiment pas ou…

Merci de m’aider :sweat:

$req = “SELECT * FROM gd_produits WHERE nom = ‘$nom’”;

comme ça avec des simple guillemets

ps : sans nom va te dire d’utiliser mysql_real_escape_string

Sa marche !!!

Merci mec !!!
C’est embetant ses guillemets, j’ai pourtant essayé quelques autres possibilités qui elles aussi ont echoué…

Merci a toi encore…

Qu’apporte mysql_real_escape_string de mieux ?
Si SansNom le conseille souvent c’est que cela ne doit pas etre inutile :slight_smile:

Merci encore :jap: :bounce:

Je devrais faire payer les royalties sur le nom…

can93> cf. la FAQ.

Et si t’es pas convaincu, essaye donc de faire ça :

$nom = ‘’’; SHOW TABLES; --’;
et un print $req;

et teste la requête dans phpmyadmin.

tu prends les cheques ? ;p

Je comprends rien a ta requete :pt1cable:

Oui je suis un nul :stuck_out_tongue:

Cf. La FAQ.

Puis t’as pas à comprendre, juste à faire l’essai.

Sans-nom, à propos : tu peux m’expliquer la diff entre mysql_real_escape_string() et addslashes()?

addslashes protègles chaînes PHP de manière indifférentes : ’ est protégé par ', " par ", etc. En gros :

addslashes( “foo’’”) produit foo’’ et addslashes( ‘foo""’); produit foo"" ce qui n’est déjà plus du tout la même chose puisque mySQL peut très bien faire comme PHP fait quand tu utilises des single quotes :

Entre ’ et ’ seuls ’ et \ sont remplacés par ’ et , sinon c’est \.

Pire encore… en SQL, ’ n’est pas standard, c’est ça qui est standard :

‘C’‘est la vie’

Pas ‘C’est la vie’.

Avec mysql_real_escape_string tu t’assures que :

  1. c’est une fonction optimisée pour les requêtes mySQL
  2. cela supporte les locales (ie: serveur en UTF, et toi en ISO, ou connerie du genre)
  3. si jamais mySQL se met à plus reconnaître ’ pour protéger les chaînes, hé bien ta requête sera portable et surtout réutilisable pour peu que la lib mySql soit à jour

etc.

Bien sûr,

cf. [1] http://fr.php.net/manual/fr/function.addslashes.php
[2] http://fr.php.net/manual/fr/function.mysql-real-escape-string.php