qui.dominatur Posté(e) le 1 septembre 2011 Partager Posté(e) le 1 septembre 2011 Bonjour, J'ai un problème de connexion à une Database. Je vous explique comment je fais et je mets le code juste en-dessous. Merci pour votre aide. Je me connecte en définissant une variable indiquant quelle BDD je souhaite ouvrir et je mets l'include des requêtes de connexion juste après, comme ceci : Sur la première ligne de la page $ref_bdd = true; include('my_sql.php'); Dans le my_sql.php j'ai : elseif(isset($ref_bdd)){try{$open_bdd = 'fr1';$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;$bdd = new PDO('mysql:host=localhost;dbname = $open_bdd', 'root', '', $pdo_options);}catch (Exception $e){ die('Erreur : ' . $e->getMessage());}} Je n'ai aucune erreur jusqu'ici. Et quand je test le elseif(), il est bien ouvert. Plus loin dans la page, et il n'y a aucune autre requete mysql entre les deux : $req = $bdd->query('SELECT * FROM user_pict ORDER BY id DESC LIMIT 1'); while ($table = $req->fetch()) {$new_idp = $table['id'] +1; $ref_pict = 'fr'.$id_user.'_'.$new_idp;echo 'testttttttttt';.......} En fait je veux juste avoir la plus grande id puisque je m'en sers ensuite pour créer la référence de l'image que j'upload. $id_user est bien défini. et l'erreur que j'obtiens : Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected' in C:\wamp\www\TYD\CLEAN\galerie.php:36 Stack trace: #0 C:\wamp\www\TYD\CLEAN\galerie.php(36): PDO->query('SELECT * FROM u...') #1 {main} thrown in C:\wamp\www\TYD\CLEAN\galerie.php on line 36 Donc d'après ce que je comprend, il n'ouvre pas la BDD. Même en mettant les requêtes de connexion de my_sql.php juste avant la requete sur la table j'ai la même erreur. J'ai aussi essayé de faire une requête sur user_pict (la table) encore plus simple, pas de résultat. Bref, je sèche un peu. Surtout que j'utilise cette procédure sur d'autre page et que je ne rencontre aucun problème. Les noms des BDD et de TABLE sont bons et existent, j'ai vérifié plusieurs fois ;-) Merci de votre aide ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
maximeK Posté(e) le 1 septembre 2011 Partager Posté(e) le 1 septembre 2011 Tu devrai mettre ton fichier my_sql.php en entier avec un peut plus de code que le code la requete qu'on arrive a voir un peut plus le cheminement des variables. Mais bon clairement, sa fait se que sa dit : No database selected Donc l'erreur devrai etre ici : $bdd = new PDO('mysql:host=localhost;dbname = $open_bdd', 'root', '', $pdo_options); Lien vers le commentaire Partager sur d’autres sites More sharing options...
qui.dominatur Posté(e) le 1 septembre 2011 Auteur Partager Posté(e) le 1 septembre 2011 Merci de la réponse. Entre temps je m'y suis remis un peu et j'ai essayé de faire une connexion toute bête sur une DB connu avec que ça sur la page et......même erreur. Donc à priori l'accès mysql est complètement planté ! J'utilise la dernière version de WAMP et l'adresse localhost/phpMyAdmin est parfaitement accessible...Les login root et '' n'ont pas changés. J'ai redémarré les services, redémarré l'ordinateur et toujours pareil. Je ne comprends absolument pas, je vais chercher sur internet maintenant que j'ai des nouvelles infos mais si quelqu'un voit d'où ça peut venir ;-) Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 1 septembre 2011 Partager Posté(e) le 1 septembre 2011 Par curiosité : quel est l'intérêt d'ouvrir une connexion MySQL via PDO au lieu du module MySQL directement intégré à PHP (fonctions mysql_xxxx) ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
qui.dominatur Posté(e) le 1 septembre 2011 Auteur Partager Posté(e) le 1 septembre 2011 Je n'avais pas programmé depuis longtemps donc j'ai refait un tour sur mes tutoriels favoris et à priori les fonctions mysql sont amenés à disparaitre remplacés par les fonctions mysqli_ ou PDO. Comme le tutoriel recommandait et utilisait les fonctions PDO je m'y suis mis. Ca me permet de refaire un point, et c'est d'ailleurs en rapport avec le précédent commentaire : Les requêtes mysql_ fonctionne parfaitement pour accéder à la base. Les PDO ne fonctionnent plus. Je n'avais rien touché mais j'ai quand même été voir dans php.ini si les librairies étaient activées et la réponse est oui ! Donc je pourrai continuer en remplaçant mes fonctinos PDO par des mysqli_ mais comme j'aime bien comprendre ce qu'il se passe, je vais continuer de chercher. Any ideas ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 1 septembre 2011 Partager Posté(e) le 1 septembre 2011 J'ai lu le manuel de PHP, section MySQL, et il ne semble pas du tout question de supprimer les fonctions mysql_ donc à mon avis vous pouvez utiliser ça De plus, c'est largement la norme actuelle chez tous les hébergeurs... Lien vers le commentaire Partager sur d’autres sites More sharing options...
qui.dominatur Posté(e) le 1 septembre 2011 Auteur Partager Posté(e) le 1 septembre 2011 Je me suis résout à utiliser les mysqli_ ;-) C'est dans le tuto php du siteduzero qu'ils parlent de ça, je n'ai pas d'avis sur la question et ça ne m'intéressait de voir une autre manière de faire. Je mets en résolu même si j'aimerai savoir pourquoi mon WAMP ne veut plus executer les requêtes PDO... Lien vers le commentaire Partager sur d’autres sites More sharing options...
maximeK Posté(e) le 2 septembre 2011 Partager Posté(e) le 2 septembre 2011 J'ai lu le manuel de PHP, section MySQL, et il ne semble pas du tout question de supprimer les fonctions mysql_ donc à mon avis vous pouvez utiliser ça De plus, c'est largement la norme actuelle chez tous les hébergeurs... J'avais recu la newsletter PHP a se suject : http://www.phpclasses.org/blog/post/154-PHP-54-Alpha-Features--Lately-in-PHP-podcast-episode-14.html L'abordé c'est le signe que sa leurs trotte dans la tête, donc oui il vaut mieux commencer a utiliser PDO qui commence a devenir un standards ( utilisation dans les frameworks, pensée en POO ). Lien vers le commentaire Partager sur d’autres sites More sharing options...
WhiteRaven Posté(e) le 5 septembre 2011 Partager Posté(e) le 5 septembre 2011 $bdd = new PDO('mysql:host=localhost;dbname = $open_bdd', 'root', '', $pdo_options); Sauf erreur de ma part, le problème vient, je pense, de l'utilisation de simple quotes plutôt que les doubles. <?php $a = 'aaa'; echo '$a';//affichera: $a echo "$a";//affichera: aaa ?> Ton code essaye donc de se connecter à la base $open_bdd au lieu de sa valeur. La version correcte devrait être : $bdd = new PDO("mysql:host=localhost;dbname = $open_bdd", 'root', '', $pdo_options); Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.