No database selected

Fermé
Esmahi - 12 févr. 2022 à 20:01
jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 - 12 févr. 2022 à 21:40
Bonjour,
lors de test de ce code j'ai un code d'erreur comme suit :
'SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected'
et voila le code :
<?php
try {
$pdo = new PDO("mysql:host = localhost ; dbname = facturation" , "root" , "");
$pdo -> setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION);
echo "connected";
echo "</br>";
$pdo -> getAttribute(constant("PDO::ATTR_CONNECTION_STATUS"));

} catch (PDOException $e) {
die("error : could not connected".$e -> getMessage());
}

?>
<?php
try {
$SQL = "SELECT * FROM clients";
$result = $pdo -> query($SQL);
if($result -> rowCount() > 0){
echo "<table>";
echo "<tr>";
echo "<th>idClient</th>";
echo "<th>nom</th>";
echo "<th>prenom</th>";
echo "<th>ville</th>";
echo "<th>tel</th>";
echo "</tr>";
while($row = $result -> fetch()) {
echo "<tr>";
echo "<td>" .$row['idClient']."</td>";
echo "<td>" .$row['nom'] ."</td>";
echo "<td>" .$row['prenom']."</td>";
echo "<td>" .$row['ville']."</td>";
echo "<td>" .$row['tel']."</td>";
echo "</tr>";
}
echo "</table>";
}else {
echo "no records matching";
}

} catch (PDOException $e) {
die("Error : ".$e ->getMessage());
}
?>

1 réponse

jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 4 719
12 févr. 2022 à 21:40
Bonjour,

Ta question concernant avant tout le php .. je la déplace dans le forum php.

Ensuite, lorsque tu postes du code sur le forum, tu dois utiliser les balises de code.
Explications ( à lire entièrement ! ) disponibles ici :https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Es-tu sûr des informations saisies ?
Et évites les espaces dans la chaine de connexion ...

Essayes ça:
try{
  $pdo =new PDO('mysql:host=localhost;dbname=facturation; charset=utf8', 'root', '');
  // Activation des erreurs PDO
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
  echo "connected";
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}


Si le souci persiste, vérifie le nom de la base de données .. ( éventuellement, mets nous une capture écran de ton phpmyadmin)

PS: Il aura d'autres choses à revoir au niveau de ton code...
- Par exemple, il est préférable de privilégier les requêtes préparées au lieu de la méthode query
- La méthode rowCount est déconseillée en PDO pour des requêtes de type select
- Sépare les blocs TRY/CATCH de tes requêtes et l'utilisation du résultat de la requête pour générer ton html

Tout ça améliorera ton code, sa lisibilité et donc sa maintenabilité (sans parler de la sécurité pour les requêtes préparées)


0