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

Fermé
max-jacob - Modifié le 2 juil. 2020 à 19:38
 max-jacob - 4 juil. 2020 à 14:40
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

yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
2 juil. 2020 à 20:11
bonjour, peut-être pourrais-tu nous montrer ton code, sans oublier d'utiliser ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
3 juil. 2020 à 00:06
Bonjour


ma connexion utilise PDO mais j'utilise toujours Mysqli


What ??

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




0
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
3 juil. 2020 à 19:50
Et que contient ta page db.php ?
0

<?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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
3 juil. 2020 à 20:39
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

OK, jevais essayer de remplacer Mysqli par PDO.
0