Bonjour à tous, je suis débutant PHP.
J'ai appris a faire mes requetes en bdd avec les methode mysql_
Or je tente d'apprendre à utiliser les methodes avec PDO.
Avant j'utilisais une classe que j'avais créée pour me connecter à mysql, lire, ecrire, mettre à jour et effacer les données.
Sur le meme modèle je tente de mettre en place une classe mais qui utilise cette fois ci PDO.
Mais j'obtiens toujours une erreur et mes résultats ne s'affichent pas. Pourtant quand je ne passe pas par la classe mais que je tape directement le code dans ma page, aucun probleme.
Voici mon code pour la classe :
Voici à présent le code de ma page :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 <?php require_once('config.php'); class mysql_use{ private $connexion; //on initialise la fonction de construction de classe et on renseigne les variables de connexion avec les données de connexion de la base de données function __construct(){ global $host, $user, $pwd, $db, $connexion; $connexion = new PDO("mysql:host=$host;dbname=$db",$user,$pwd); $connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $connexion->exec("set names utf8"); echo "<strong>Connexion Ok</strong><br />"; } function __destruct(){ $connexion=null; } //on déclare une nouvelle fonction publique qui va aller sélectionner les éléments souhaités selon des parametres précis public function exe_select_query($fields, $table, $clause, $orderby, $limit){ global $connexion; $sql="SELECT ".$fields." FROM `".$table."` ".$clause.$orderby.$limit.""; echo $sql; $requete = $connexion->query($sql); } ?>
et pour afficher les résultats :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php require_once('class/class.pdo_mysql_use.php'); $fields="uid, nom, prenom, email, pays"; $table="contact"; $clause=' WHERE 1'; $orderby=' ORDER BY nom'; $limit=' LIMIT 0,20'; $ma_connexion = new mysql_use; $resultats=''; $req=$ma_connexion->exe_select_query($fields,$table,$clause,$orderby,$limit); ?>
ma page me renvoi l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ?php while($row=$req->fetch(PDO::FETCH_ASSOC)) { echo '<div class="row well resultats">'.$row['nom'].'</div>'; } ?>
J'avoue que ça fait plusieurs heures que j'ecume les forums, mais là je sèche :/Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected' in C:\xampp\htdocs\www\contact\class\class.pdo_mysql_use.php:27 Stack trace: #0 C:\xampp\htdocs\www\contact\class\class.pdo_mysql_use.php(27): PDO->query('SELECT uid, nom...') #1 C:\xampp\htdocs\www\contact\index2.php(11): mysql_use->exe_select_query('uid, nom, preno...', 'contact', ' WHERE 1', ' ORDER BY nom', ' LIMIT 0,20') #2 {main} thrown in C:\xampp\htdocs\www\contact\class\class.pdo_mysql_use.php on line 27
merci d'avance
PS : je précise que j'ai testé la requete direct en bdd, elle fonctionne.
Partager