Page 1 sur 1

mysql_db_query VS mysql_query

Posté : 26 févr. 2012, 17:07
par OldJacques
Bonjour à vous tous,
Depuis quelque temps je rencontre un problème avec :
"Deprecated: Function mysql_db_query() is deprecated in"
J'ai bien compris qu'il fallait la changé par "mysql_query"

Mais voila je ne comprend pas.
J'ai recherché des exemples concrets sur la toile... :(
Même sur php.net je ne comprend pas l'exemple #2.
Je nage completement !?
(Que vient faire : mysql_real_escape_string($firstname) Je suis allez voir et je ne comprend même pas "Protège une commande SQL de la présence de caractères spéciaux")

voila avant je faisais cela :

Dans un fichier : connect.php, tous mes variables de connexions : $db_host; $db_base; $db_user; $db_pass;
Et : $db = mysql_connect("$db_host", "$db_user", "$db_pass") or Die("Base Down !");

Puis dans mes pages :
$sql="SELECT * FROM $TAB WHERE 1";       
$resultat = mysql_db_query($db_base, $sql, $db) or die ('ERREUR \"$resultat\" : '.$sql.' '.mysql_error());
$enr = mysql_fetch_array($resultat)OR DIE ('ENR PAS COOL'.$sql.' '.mysql_error());
Puis à l'aide d'un :
echo $enr['nom'];
J'affichais "nom"

Ou alors :
$query = "UPDATE $TAB  SET col1='$col1', col2='$col2', ... WHERE id_tab='$id_tab";			
$result = mysql_db_query($db_base, $query, $db) OR DIE ($result.'  '.mysql_error());
Auriez vous des exemples concrets ? Ou même des liens sur des sites ou c'est clair et simple ?

Je dois me faire vieux :)

Merci à vous tous
Jacques

Re: mysql_db_query VS mysql_query

Posté : 26 févr. 2012, 17:30
par xTG
Pour la connexion tu trouveras des exemples ici : http://fr2.php.net/manual/fr/function.m ... ect-db.php (mysql_connect et mysql_select_db)
Ensuite pour un exemple de mysql_query, il y en a plein la doc : http://fr2.php.net/manual/fr/function.mysql-query.php
Concernant mysql_real_escape_string() c'est une fonction de protection à utiliser sur toute variable que tu injectes dans une requête. Cela échappe les caractères et évite les injections non volontaires.

Re: mysql_db_query VS mysql_query

Posté : 26 févr. 2012, 17:48
par OldJacques
xTG,
Merci de ta réponse.

J'ai regardé la doc php http://fr2.php.net/manual/fr/function.mysql-query.php
Je ne comprend pas l'exemple #2 ...

Pas grave vais utiliser l'éternel "@" ! :)
Tant pis
Merci bonne journée
Jacques

Re: mysql_db_query VS mysql_query

Posté : 26 févr. 2012, 19:04
par Ryle
Nooooonnn pas le "@" !! :)

Alors si je te dis que mysql_real_escape_string() te permet de protéger tes variables, je suppose que tu vas pas être plus avancé, alors on va essayer avec un exemple :)

Supposons la requête suivante :
"DELETE FROM ma_table WHERE colonne = '" . $var . "'";
Cette requête supprimer tous les enregistrement pour lesquels la valeur de colonne est égale à $var. Jusque là, tout va bien si $var est égal à un id ou une chaine de caractère... mais si l'utilisateur te soumet une variable $var qui a la valeur suivante : " ' OR 'toto'='toto ", ta requête devient :
"DELETE FROM ma_table WHERE colonne = '' OR 'toto'='toto'";
Cette requête supprimer tous les enregistrement pour lesquels la valeur de colonne est égale à vide ('') OU pour lesquels toto sera égal à toto (ce qui est toujours le cas). Et hop, d'une simple variable non protégée, te voilà avec une table vide :)

Et ça, c'est juste avec une apostrophe ;)

Dans l'exemple, c'est vrai qu'il est ridicule de protéger la chaîne 'fred', mais ils indiquent que ces valeurs peuvent être demandées à un utilisateur... et il devient alors important de les protéger pour éviter que ta requête ne retourne des informations que tu n'aurais pas souhaité communiqué (ex : une union avec la tables des utilisateurs qui contient login et mot de passe... voire même ceux du user avec lequel tu te connectes - et donc obtenir ainsi un contrôle total sur ta base)

Une fois la requête sql constituée (et sécurisée), mysql_query() va l'exécuter et récupérer les résultats qu'il suffit ensuite de parcourir classiquement avec l'un des mysql_fetch_* :)

Est-ce que c'est plus clair ? et est-ce que tu vas oublier l'usage du @ ? ;)

Re: mysql_db_query VS mysql_query

Posté : 27 févr. 2012, 11:15
par mere-teresa
(Que vient faire : mysql_real_escape_string($firstname) Je suis allez voir et je ne comprend même pas "Protège une commande SQL de la présence de caractères spéciaux")
Image

Re: mysql_db_query VS mysql_query

Posté : 27 févr. 2012, 11:28
par moogli
:mrgreen: :mrgreen: :mrgreen: