8768 sujets

Développement web côté serveur, CMS

Bonjour,

je viens de mettre mon site en ligne est j'obtiens une erreur lors d'un insert (traitement d'un formulaire)
Warning: mysql_real_escape_string(): Access denied for user 'www-data'@'localhost' (using password: NO) in 


Bon j'ai compris l'erreur mais je n'arrive pas à la mettre en application.
Ma connexion à ma bdd est centralisé dans un fichier config

lors de ma requête je fait :
$sql =$cnx->query('INSERT INTO utilisateurs(IDUtilisateur, NomUser, Prenom, IDClient, IDSite, Email, IDValidation, Login, Password) VALUES("", "'.mysql_real_escape_string(stripslashes($_POST['nom'])).'")') or die('ERROR SQL!'.$sql.mysql_error());


La variable $cnx étant ma connexion à la bdd.
Je ne vois pas comment faire pour me connecter bien avant en utilisant ma variable ( facilité de modif info de connexion)
Modifié par cid5420 (24 Feb 2014 - 11:33)
Ca provient probablement du fait que tu n'es pas encore connecté au moment où mysql_real_escape_string est appelée. Il faut que la connexion soit active avant d'appeler cette fonction, sinon une connexion par défaut est tentée et en général ce n'est pas ce que tu veux.


P.S. Les fonctions mysql_* sont dépréciées et ne devraient plus être utilisées. En 2014, on conseille PDO, ou au moins mysqli.
Modifié par QuentinC (24 Feb 2014 - 12:03)
Oui c'est ce que j'ai remarqué !

J'ai lue que je pouvais utiliser pdo prepare mais je ne sais pas comment la mettre en application avec ma variable de connexion

Pouvez vous m’orienter pour que ça colle avec ma requête ?
Pour compléter le post de QuentinC, le problème n'est pas que tu n'es pas connecté...

Mais que ta connexion n'est pas une connexion mysql_ (qui n'est pas en orienté objet), mais à vue de nez, une connexion PDO ($cnx utilisé classiquement dans les tutos). Et qu'une fonction mysql_ demande une connexion mysql_.

Un conseil, fixe-toi une extension de connexion à la base de données et OUBLIES de chercher des fonctions n'importe où.

connexion PDO = fonctions PDO
connexion mysqli_ = fonctions mysqli_
connexion mysql = code à remettre à jour avec l'un des deux au-dessus.
ok merci du conseil, j'ai fait beaucoup de ménage dans mon site, je ne savais pas qu'il ne fallait pas mélanger, au finale j'ai tous mis en pdo, j'essaie de garder cette bonne pratique pour la suite.
Pour info, l'équivalent de mysql_real_escape_string en PDO est la méthode quote.
Mais si on utilise les requêtes préparées alors on n'en a pas besoin.