PHP/MySql - No database selected - mysql_query

Bonjour,
Je sais qu’un sujet équivalent a déjà été posté mais cela n’a pas répondu à mon problème.
J’obtiens le message “no database selected” lorsque je charge ma page. J’ai vérifié mes informations de connection et la base est créée. C’est un script pour valider une adresse mail en PHP.
Merci à ceux qui prendront 2 minutes pour se pencher sur mon problème.

<?php include "config.php"; $db=mysql_connect($dbhost, $dbuser, $dbpass); mysql_select_db($dbbase, $db); $email = nl2br($_POST['email']); $verif = "!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!"; if(!empty($email) && preg_match($verif,$email)){ mysql_query('INSERT INTO newsletter (email) VALUES ("'.$email.'")')or die ('Erreur SQL !'.$sql.'
'.mysql_error()); echo "Votre email a été enregistré.";} elseif(!empty($email) && !preg_match($verif,$email)){ echo "Votre email est invalide.";} mysql_close(); ?>

Edité le 21/09/2007 à 12:32

Ca veut dire ce que ça veut dire : il n’y a pas de base de données sélectionnée. Vérifie ce que tu passes à la fonction mysql_select_db($dbbase, $db).

Au passage, ta regexp te protège, certes mais :

  1. si c’est un email, tu n’as pas à faire du nl2br (ie: remplacer \n par
    /n)
  2. l’injection SQL dans ta requête:

mysql_query(‘INSERT INTO newsletter (email) VALUES ("’.$email.’")’)or die (‘Erreur SQL !’.$sql.’
’.mysql_error());
echo “Votre email a été enregistré.”;}

Si tu ne vérifiais pas que c’est un email, tu aurais une possible injection SQL, où l’on pourrait par exemple effacer toute ta base de données.

–> mysql_query(‘INSERT INTO newsletter (email) VALUES (’’.mysql_real_escape_string($email).’’)’)or die (‘Erreur SQL !’.$sql.’
’.mysql_error());
echo “Votre email a été enregistré.”;}

Et fait aussi attention à ta requête, tu as je pense inversé les quotes.

bonjour et merci de te pencher sur mon pb…
alors j’ai commencé par vérifier si les paramètres de connexion étaient bon en passant par un echo et c’est tout bon.
Par contre qu’est ce que tu entends par “inverser les quotes” dans la requête ? … je débute dans la programmation en php et il y a encore un certains nombres de trucs que j’ai du mal à comprendre.

1- essaye de mettre “nomdetabase” dans mysql_connect au lieu de $dbbase
2- il veut dire qu’au lieu d’ecrire “… VALUES (”’.$email.’")’)or die …" il faudrait écrire “… VALUES (’”.$email."’)’)or die …"

1 - j’avais déjà essayé mais ça ne change rien, toujours le même message d’erreur
2 - j’ai remplacé ("’.$email.’") par ce qu’il m’a donné (’’.mysql_real_escape_string($email).’’) et toujours pareil

essaye un truc genre :

$db=mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbbase, $db) or die mysql_error($db);

puis

mysql_query(“insert bla into foo/bar … etc etc requete de ouf”, $db) or die mysql_error($db);

voila voila …

alors finalement à force de bidouillage … ça marche !!! merci beaucoup pour ton aide.
Bonne journée