Comment résoudre ERREUR PDO dans SQLSTATE[HY000] [1524] Plugin is not loaded

max-jacob -  
 max-jacob -
Bonjour,

J'ai l'habitude de programmer avec Wamp mais dès lors que j'ai migré vers Easy PHP
avec les détails suivant:

Apache 2.4.25 x86 - PHP 5.6.30 x86 Port: 80
MySQL 5.7.17 x86 Port: 3306

Maintenant lorsque je lance mon application, j'obtiens bien la page de login mais lorsque je tente une connexion avec un login corect, j'obtiens le message d'erreur:

ERREUR PDO dans SQLSTATE[HY000] [1524] Plugin '*4F57BFFF7B9480A7D39BBEB8618276A816FD1BFA' is not loaded

Franchement, je sais quoi faire. Je suis un Win10 64 Bits.

Toutefois ma connexion utilise PDO mais j'utilise toujours Mysqli dans mon code, je sais pas si c'est ça le problème. Même si tel est le cas, Wampserver le gérait bien.

Merci d'avance de votre aide

5 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour


    ma connexion utilise PDO mais j'utilise toujours Mysqli


    What ??

    Si tu utilises Mysqli... Ta connexion doit être en mysqli !!

    0
  2. max-jacob
     
    Bonjour et merci de votre aide @Jordan 45 et yg_be,

    J'ai mélangé du code Mysqli avec du Code PDO sur mon app qui fonctionnait bien en locale mais c'est sur le serveur de production que j'ai eu tout les problèmes du monde. Tantôt ça fonctionne bien, tantôt des bugs sans explication.

    Vos remarquent sont les bienvenues

    le code source de ma page de login est:

    <?php
    ob_start();
    session_start();
    //session_destroy();

    if(!empty($_POST)){
    $maVariable = $_POST;
    $_SESSION['agentNomUtilisateur'] = $_POST['agentNomUtilisateur'];

    //Connexion à la Base de données
    require_once('inc/db.php');

    $usernameVerification = "SELECT * FROM agent WHERE agentNomUtilisateur = '".$maVariable['agentNomUtilisateur']."' ";
    $requete = mysqli_query($mysqli, $usernameVerification);

    if (mysqli_num_rows($requete) >=1){

    while($row = mysqli_fetch_assoc($requete)){

    //Décryptage des mots de passe issu de la base de données
    if(password_verify($maVariable['agentMotDePasse'], $row['agentMotDePasse'])){
    if($row['agentStatus'] == 0){
    session_destroy();
    die("<br><br><br><br><br>
    <center><img class='mb-4' src='img/logo.png'>
    <br><br><br>
    <h2>Désolé!<br>Votre compte est désactivé par l'administration.<br>
    Si vous penser qu'il s'agit d'une erreur, veuiller contactez un administrateur(trice).</h2>
    <a href='index.php'>Retour à la page de connexion</center></a>");
    }
    $_SESSION['utilisateur'] = '';
    $_SESSION['roleuser']= $row['roleId'];

    header('Location:app/index.php');

    }else{
    $error_login = "Mot de passe incorrecte";
    }
    }

    } else {
    $error_login = "Nom d'utilisateur incorrecte";
    }

    mysqli_close($mysqli);
    }
    ?>

    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="robots" content="noindex,nofollow" />
    <link rel="icon" href="img/favicon.png">

    <title>My App</title>
    <meta http-equiv="refresh" content="600;URL=http://mywebapp.com">

    <!-- Bootstrap core CSS -->
    <link href="css/bootstrap.min.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="css/signin.css" rel="stylesheet">
    </head>

    <body class="text-center">

    <form class="form-signin" action="" method="post" name="connect_form">

    <img class="mb-4" src="img/logo.png" alt="" >
    <?php
    if (isset($error_login)){
    echo "<p style='color:red'>$error_login</p>";
    } ?>
    <label for="inputEmail" class="sr-only">Utilisateur</label>
    <input type="text" id="agentNomUtilisateur" class="form-control" placeholder="Nom d'Utilisateur" name="agentNomUtilisateur" required autofocus>
    <label for="inputPassword" class="sr-only">Mot de passe</label>
    <input type="password" id="agentMotDePasse" class="form-control" placeholder="Mot de passe" name="agentMotDePasse" required>

    <button class="btn btn-lg btn-primary btn-block" type="submit">Connexion</button>
    <p class="mt-5 mb-3 text-muted">© 2017-2020 La Poste Centrafricaine</p>
    </form>
    </body>
    </html>



    Ci dessous maintenant le code de la page privé qui se trouve après un login correcte
    Toute vos remarques sont les bienvenus.



    <?php
    ob_start();
    session_start();

    if(!isset($_SESSION['agentNomUtilisateur']))
    {
    header("location:../disconnected.php"); // redirection
    exit; // arrêt du script
    }
    //La session est ouverte on peut afficher la page
    require_once('../inc/db.php');//Connexion à la base de données

    //Requête affichage du nom de l'Utilisateur
    $agentNomUtilisateur = $_SESSION['agentNomUtilisateur'];
    $ps = $pdo -> prepare("SELECT * FROM agent WHERE agentNomUtilisateur = ?");
    $params=array($agentNomUtilisateur);
    $ps -> execute($params);
    $agent=$ps->fetch();

    //Redirect to admin MENU
    if($agent['agentNiveauAcces']==1){
    header("location:../app/admin.php"); // redirection
    exit; // arrêt du script
    }
    ?>

    <!doctype html>
    <html lang="fr">
    <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="robots" content="noindex,nofollow" />
    <link rel="icon" href="../img/favicon.png">
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="../css/bootstrap.css">
    <link rel="stylesheet" href="../css/custom.css">

    <title>My App</title>
    <?php header("refresh:600;url=../app/d.php"); ?>
    </head>
    <body>
    <?php
    //Importations du menu
    require_once('../inc/menu.php');
    ?>

    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Et que contient ta page db.php ?
      0
  3. max-jacob
     

    <?php
    //Connection à la base de données par PDO
    try{
    $strConnection = 'mysql:host=localhost;dbname=MonDatabaseName';
    $pdo = new PDO ($strConnection, 'MonDatabaseUsername', 'MonDatabasePassword');

    // Activation des erreurs PDO
    // $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
    // $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    }
    catch (PDOException $e){
    $msg = 'ERREUR PDO dans ' . $e->getMessage();
    die ($msg);
    }
    ?>


    Voilà, c'est typiquement le code.
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Le problème est donc, comme je te le disais, de ne pas mélanger PDO et Mysqli.

      Dans ton premier script, tu utilises mysqli .... alors que tu charges le fighcier db.php qui fait, lui, la connexion en PDO.


      Il faudrait déjà testé si le module PDO est présent ( et activé ) sur ton serveur.
      Pour ça, tu peux créer un fichier php à la racine de ton site ( nommé par exemple checkPdo.php )
      dedans
      <?php
      if ( extension_loaded('pdo') ) {
         echo " PDO est là !";
        echo " Tu peux remplacer tes codes mysqli par du PDO";
      } else {
        echo "Pas de PDO ... utilise uniquement mysqli ";
      }
      
      

      Puis tu le lances.
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. max-jacob
     
    Réssultat: PDO est là ! Tu peux remplacer tes codes mysqli par du PDO.

    OK, jevais essayer de remplacer Mysqli par PDO.
    0