PDO et class pour la connexion : impossible d'afficher les résultats
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 :
Code:
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);
}
?> |
Voici à présent le code de ma page :
Code:
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);
?> |
et pour afficher les résultats :
Code:
1 2 3 4 5 6
| ?php
while($row=$req->fetch(PDO::FETCH_ASSOC))
{
echo '<div class="row well resultats">'.$row['nom'].'</div>';
}
?> |
ma page me renvoi l'erreur suivante :
Citation:
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
J'avoue que ça fait plusieurs heures que j'ecume les forums, mais là je sèche :/
merci d'avance
PS : je précise que j'ai testé la requete direct en bdd, elle fonctionne.