Affichage des données

Résolu
A1111111* -  
 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

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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://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
    0
  2. A1111111*
     
    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
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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());
      }
      
      0
      1. A1111111* > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Merci beaucoup pour votre aide çaa fonctionne
        0