Affichage des données
Résolu
Bonjour,
J'ai crée une base de données dans sql et je veux l'afficher dans php j'ai utilisée ce code
pour le fichier database.php
On m'affiche l'erreur suivante :
( ! ) Fatal error: in C:\wamp644\www\index.php on line 22
( ! ) PDOException: in C:\wamp644\www\index.php on line 22
Pouvez-vous m'aider svp ?
J'ai crée une base de données dans sql et je veux l'afficher dans php j'ai utilisée ce code
<?php
include 'database.php';
global $db;
$q =$db->query('SELECT * FROM utilisateurs');
while ($user= $q->fetch()) {
var_dump($user);
}
?>
pour le fichier database.php
<body>
<?php
define('Host','localhost');
define('DB_name','siteweb');
define('utilisateurs','root');
define('Pass','');
try{
$db=new PDO("mysql:3306.host=" .Host. ";DBname" .DB_name,utilisateurs,Pass);
$db -> setAttribute(PDO:: ATTR_ERRMODE,PDO:: ERRMODE_EXCEPTION);
echo "connexion >OK";
} catch(PDOException $e){
echo $e;
}
On m'affiche l'erreur suivante :
( ! ) Fatal error: in C:\wamp644\www\index.php on line 22
( ! ) PDOException: in C:\wamp644\www\index.php on line 22
Pouvez-vous m'aider svp ?
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
2 réponses
-
ModérateurBonjour,
Déjà, que vient faire le <body> dans ton database.php ??
Retire le !
Ensuite,
Il faut activer l'affichage des erreurs PHP
Ne pas utiliser global si tu n'es pas dans une fonction
Placer CHAQUE requête dans un bloc try/catch
Perso, je te conseille déviter le ->query et de prendre la bonne habitude d'utiliser des requête préparées.
Ce qui donnerait un truc du genre<?php //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // On inclus la connexion à la bdd require_once 'database.php'; //préparation de la requêt et des variables éventuelles $sql = "SELECT * FROM utilisateurs"; $datas = null; // pas de variable à passer à la requête //Execution de la requete try{ $requete = $db -> prepare($sql) ; $requete->execute($datas) ; //on stocke le resultat dans un array $result = $requete->fetchAll(); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } //on vérifie que le résultat de la requête n'est pas vide if(!empty($result)){ // on boucle sur chaque ligne du résultat foreach($result as $user ){ var_dump($user); } }
Un peu de lecture complémentaire
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
et ceci :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
-
Bonjour
Merci beaucoup d'avoir pris le temps pour répondre à ma question après avoir essayé le code je reçois une autre erreur
SQLSTATE[3D000]: Invalid catalog name: 1046 Aucune base n'a �t� s�lectionn�e Les datas : SELECT * FROM utilisateurs-
ModérateurSi tu avais regardé les liens que je t'ai donné... tu aurais du voir que ta chaine de connexion n'est pas bonne
Remplace ton code de connexion par:<?php define('Host','localhost'); define('DB_name','siteweb'); define('utilisateurs','root'); define('Pass',''); define('Port',3306); try{ $db =new PDO('mysql:host='.Host.';port='.Port.'; dbname='.DB_name.'; charset=utf8', utilisateurs, Pass); // Activation des erreurs PDO $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } -
@jordane45Merci beaucoup pour votre aide çaa fonctionne
-