Problème de connexion en PDO

Résolu/Fermé
Lox917 - Modifié par Lox917 le 2/04/2016 à 17:48
 Lox917 - 3 avril 2016 à 12:33
Bonjour,

J'ai actuellement un script php ou j'ai créer une class database qui se connecte à une base de donnée MySQL.


<?php
class Database{
    private $host      = "localhost";
    private $user      = "root";
    private $pass      = "";
    private $dbname    = "info";
 
    private $dbh;
    private $error;
    
    private $stmt;
    
    public function __construct(){
        // Set DSN
        $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;
        // Set options
        $options = array(
            PDO::ATTR_PERSISTENT    => true,
            PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION
        );

        try{
            $this->dbh = new PDO($dsn, $this->user, $this->pass, $options);
        }
        catch(PDOException $e){
            $this->error = $e->getMessage();
        }
    }
    
    
    public function query($query)
    {
        echo $query;
        $this->stmt = $this->dbh->prepare($query);
    }



Quand j’exécute le code suivant en entrant les information d'identification root à la base de donnée, cela se déroule correctement..

<?php

include_once("database.php");

$database = new Database();

$database->query('SELECT `Description Pathologie` from allData WHERE `Name Keyword` LIKE "toux"');

$rows = $database->resultset();

foreach($rows as $element)
{
    echo $element['Desc'] . '<br />';
}



Quand je remplace l'utilisateur root par un utilisateur lambda qui dispose uniquement de tous les droits sur la base "info", le serveur me retourne l'erreur :
 Fatal error: Call to a member function prepare() on null in database.php 


Je ne vois pas les droit qu'il manque à l'utilisateur mais étant donnée qu'avec l'utilisateur root sa fonctionne je dois avoir oublier quelle que chose.

J'ai donné les droit suivant à cette utilisateur lambda :

GRANT USAGE ON *.* TO 'info'@'localhost';


Avez vous une idée de comment résoudre mon problème?

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
3 avril 2016 à 04:03
Bonjour,

Pour commencer, dans ton __construct ... fais donc un ECHO de l'erreur (dans le catch)
  $this->error = $e->getMessage();
   echo "Erreur lors de la connexion à la BDD : ".$this->error;

0
Voilà l'erreur qui mes retourné :

Erreur lors de la connexion à la BDD : SQLSTATE[HY000] [1045] Access denied for user 'tli'@'localhost' (using password: YES)SELECT `Description Pathologie` from allData WHERE `Name Keyword` LIKE "toux"

Fatal error: Call to a member function prepare() on null in database.php


Je vois bien que mon utilisateur ne peut pas se connecter mais pourquoi ?
0
Lox917 > Lox917
3 avril 2016 à 12:33
Bon j'ai trouvé une réponse qui me convient..
Wamp c'est pas terrible donc sa plante ... j'ai refais la même chose sur un serveur linux sa fonctionne.

Merci de ton aide au moins j'aurais appris que les erreur ne s'affiche pas toutes seul :)
0