Affichage des données [Résolu]

Signaler
-
 A1111111* -
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
<?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

Messages postés
29570
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 septembre 2020
2 785
Bonjour,

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://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

et ceci :
https://www.commentcamarche.net/faq/48399-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
Messages postés
29570
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 septembre 2020
2 785
Si 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());
}
>
Messages postés
29570
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 septembre 2020

Merci beaucoup pour votre aide çaa fonctionne