¿Por qué tengo un error grave: llamar a una función miembro prepare () en un objeto que no es?

He hecho una pregunta por error de PDO ( aquí, pero tengo otro problema con el objeto …

Aquí está mi código:

include('../../config/connexion-bdd.php'); $nom = $_POST['nom']; $regexNom = '/^[a-zA-Z -]+$/'; $prenom = $_POST['prenom']; $regexPrenom = '/^[a-zA-Z -]+$/'; $email = $_POST['email']; $regexEmail = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[az]{2,3})$/'; $identifiant = $_POST['identifiant']; $regexIdentifiant = '/^[a-z1-9]+$/'; $motDePasse = $_POST['motDePasse']; $confirmeMotDePasse = $_POST['ConfirmeMotDePasse']; $regexMdp = '/^[a-zA-Z1-9]+$/'; $utilisateurConnecte = $_POST['utilisateur-connecte']; if (preg_match($regexNom, $nom) && preg_match($regexPrenom, $prenom) && preg_match($regexEmail, $email) && preg_match($regexIdentifiant, $identifiant) && preg_match($regexMdp, $motDePasse) && preg_match($regexMdp, $confirmeMotDePasse) && $motDePasse == $confirmeMotDePasse) { $stmt = $bdd->prepare('SELECT COUNT(*) FROM utilisateurs WHERE identifiant = ?'); $stmt->execute(array($_POST['identifiant'])); if ($stmt->fetchColumn() == 0){ $updt=$connect->prepare("INSERT INTO utilisateurs('nom','prenom','email','identifiant','mot_de_passe') VALUES (:nom, :prenom, :email, :identifiant, MD5(:mdp))"); $updt->execute(array('nom'=>$nom,'prenom'=>$prenom,'email'=>$email,'identifiant'=>$identifiant,'mdp'=>$motDePasse)); header('./gestion-utilisateur.php'); } else { echo 'error 1'; } } else { echo 'error 2'; } 

Por lo tanto, tengo este error para esta línea $stmt = $bdd->prepare('SELECT COUNT(*) FROM utilisateurs WHERE identifiant = ?'); :

Error grave: llamar a una función miembro prepare () en un no-objeto en …

¿Puedes ayudarme, por favor?

Todo está claro, Su $bdd no contiene una conexión SQL. Tienes que comprobar la validez de la conexión SQL.

$bdd debe ser un objeto y, por lo tanto, contiene un método llamado prepare() .

Cuando la conexión no se establece correctamente, la variable $bdd no será un objeto y, por lo tanto, no tendrá un método de preparación.

Ahora, cuando usa $bdd->prepare() , arroja un error de que $bdd no es un objeto, por lo que no podría tener un método llamado prepare()

Ahora, debe presentar un var_dump($bdd) antes de la línea $bdd->prepare() para usarlo para inspeccionarlo.