mysql_connect dit toujours qu'il se connecte.

DonaldDuck
Invité n'ayant pas de compte PHPfrance

26 sept. 2009, 19:39

Bonjour
J'essaie de faire un site perso avec free en php. J'ai besoin de me connecter à ma base de données mysql.
Mon problème est que quand j'utilise mysql_connect($serveurfree, $utilisateur, $motdepasse), quoi que je mette dans $serveurfree ou $utilisateur ou $motdepasse, la valeur retournée par mysql_connect n'est jamais "false", mais toujours "resource id #2".
Donc il me semble que php s'est connecté quelque part, mais je ne sais pas où, et en tout cas pas là où je lui dis puisque ni le serveur, ni le mot de passe ni l'utilisateur n'existe.
Bien sûr, avant tout j'ai essayé avec les bonnes valeurs, mais bien qu'il dise être connecté, je ne peux faire aucune requête mysql ensuite...
Est-ce que quelqu'un aurait un idée pour résoudre mon problème ?
Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

26 sept. 2009, 21:07

Bonjour,

:arrow: Quel est ton code PHP?

Un conseil pour le debugage : à la fin des fonctions mysql_*() ajoute un or die("Erreur MySQL : ".mysql_error());

Exemples:
mysql_connect($serveurfree, $utilisateur, $motdepasse) or die("Erreur MySQL : ".mysql_error());
mysql_select_db($bdd_mysql)or die("Erreur MySQL : ".mysql_error());
mysql_query("...") or die("Erreur MySQL : ".mysql_error());
Quand tout le reste a échoué, lisez le mode d'emploi...

DonaldDuck
Invité n'ayant pas de compte PHPfrance

26 sept. 2009, 22:41

J'ai bien mis "or die " etc. à la fin mais la fonction mysql_connect donne un résultat qu'elle croit être bon (différent de false), donc je n'ai pas d'erreur mysql. Je l'ai vérifié en faisant echo mysql_error().
Voilà les parties concernées de mon code :
J'ai d'une part

Code : Tout sélectionner

<?php $connection = mysql_connect("sql.free.fr", "universdelaspc", "*******") or die("Connexion impossible au serveur. ". mysql_error()); $connected = mysql_select_db("universdelaspc", $connection) or die ("Impossible de sélectionner la base de données. ". mysql_error()); ?>
(Aucun des deux die n'est exécuté, je n'ai pas d'erreur???)
et d'autre part, la ligne qui cause une erreur :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Code : Tout sélectionner

<?php if(isset($_POST['login']) && isset($_POST['password']) && !isset($_SESSION['login'])){ $result = mysql_query("SELECT * FROM Personnes WHERE Login='" . $_POST['login'] . "' AND MotDePasse='" . $_POST['password'] . "'", $connection); if(mysql_num_rows($result) == 1) $_SESSION['login'] = mysql_result($result, 0, 0); } if(!isset($_SESSION['login'])) { echo "Vous n'êtes pas connecté. <br/>\n"; ?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

26 sept. 2009, 23:06

Code : Tout sélectionner

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
Ce qui veut dire que ta variable $result n'est pas correcte... or elle devrait être initialisée par le mysql_query().
:arrow: Ajoute un or die() à ton mysql_query()
Quand tout le reste a échoué, lisez le mode d'emploi...

DonaldDuck
Invité n'ayant pas de compte PHPfrance

27 sept. 2009, 11:29

Merci du conseil.
Voilà l'erreur que j'obtiens pour le mysql_query:
Table 'universdelaspc.Personnes' doesn't exist

Je ne suis pas surpris car je pense que je ne suis pas connecté au bon serveur.
Ca ne résout donc pas mon problème...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 sept. 2009, 12:43

Merci du conseil.
Voilà l'erreur que j'obtiens pour le mysql_query:
Table 'universdelaspc.Personnes' doesn't exist

Je ne suis pas surpris car je pense que je ne suis pas connecté au bon serveur.
Ca ne résout donc pas mon problème...
Bah connecte toi au bon serveur, que veux tu qu'on te répondes d'autre! :D

Où as-tu installé tes tables?
Si c'est bien sur le serveur "sql.free.fr" dans la base de données"universdelaspc" alors ça va marcher...
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 299 Messages

27 sept. 2009, 16:37

moi a l' epoque j' ai laissé tomber free pour un site avec espace membres.

Il n' acceptait pas mes sessions, ca a tout de suite fonctionné chez ovh, bizarre mais bon

DonaldDuck
Invité n'ayant pas de compte PHPfrance

27 sept. 2009, 17:35

ce que je voudrais bien comprendre c'est pourquoi quand je fais
$connection = mysql_connect(quelquechose)
il répond que c'est ok ($connection = "Resource id #2") alors qu'il n'a pas fait ce que je lui ai demandé...
Que je mette n'importe quoi dans quelquechose, il répond que c'est ok !

DonaldDuck
Invité n'ayant pas de compte PHPfrance

03 oct. 2009, 22:19

J'ai résolu mon problème.
Avec la commande mysql_get_host_info(), j'ai pu vérifier que j'étais en fait bien connecté à la bonne base de données.
On met n'importe quoi comme serveur et comme nom d'utilisateur, du moment que le mot de passe est bon, php se connecte à la base de données associée au site free.
Mon problème venait donc d'ailleurs, et je me suis aperçu qu'en fait il manquait une majuscule à mes noms de table dans la base de données (l'export de ma base de données locale avait supprimé les majuscules initiales...).
Merci pour vos réponses.