我问过PDO错误的问题(here 但我对象的另一个问题是......
这是我的代码:
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-]+)*(\.[a-z]{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';
}
因此,此行$stmt = $bdd->prepare('SELECT COUNT(*) FROM utilisateurs WHERE identifiant = ?');
出现此错误:
致命错误:在...中的非对象上调用成员函数prepare()
请帮助我吗?
答案 0 :(得分:0)
很明显,您的$bdd
不包含SQL连接。您必须检查SQL连接的有效性。
$bdd
必须是一个对象,因此它包含一个名为prepare()
的方法。
如果连接未正确建立,变量$bdd
将不是对象,因此无法准备方法。
现在,当您使用$bdd->prepare()
时,它会抛出$bdd
不是对象的错误,因此它无法使用名为prepare()
的方法
现在,您应该在var_dump($bdd)
行之前提供一个$bdd->prepare()
用于检查它。