提问人:Bob Limbach 提问时间:10/18/2019 更新时间:10/18/2019 访问量:7361
致命错误:未捕获错误:调用成员函数 execute() on bool [duplicate]
Fatal error: Uncaught Error: Call to a member function execute() on bool [duplicate]
问:
我想在我的网站添加注册,但我总是收到以下错误消息:
致命错误:未捕获错误:调用成员函数 execute() on C:\xampp\htdocs\webseite\user.class.php:74 中的布尔值堆栈跟踪:#0 C:\xampp\htdocs\webseite\register.php(15):用户>注册()#1 {main} 在第 74 行的 C:\xampp\htdocs\webseite\user.class.php 中抛出
这是我的寄存器功能:
public function register(){
$con = new mysqli("localhost", "xxxxx", "password", "xxxxx");
$error = false;
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$passwort = $_POST['passwort'];
$passwort2 = $_POST['passwort2'];
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo 'Bitte eine gültige E-Mail-Adresse eingeben<br>';
$error = true;
}
if(strlen($passwort) == 0) {
echo 'Bitte ein Passwort angeben<br>';
$error = true;
}
if($passwort != $passwort2) {
echo 'Die Passwörter müssen übereinstimmen<br>';
$error = true;
}
echo $email;
if(!$error) {
$statement = $con->prepare("SELECT * FROM users WHERE email = :email");
$result = $statement->execute(array('email' => $email));
$user = $statement->fetch();
if($user !== false) {
echo 'Diese E-Mail-Adresse ist bereits vergeben<br>';
$error = true;
}
}
if(!$error) {
$passwort_hash = password_hash($passwort, PASSWORD_DEFAULT);
$statement = $con->prepare("INSERT INTO users (email, passwort, firstname, lastname) VALUES (:email, :passwort, :firstname, :lastanme)");
$result = $statement->execute(array('email' => $email, 'passwort' => $passwort_hash));
if($result) {
echo 'Du wurdest erfolgreich registriert. <a href="login.php">Zum Login</a>';
} else {
echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>';
}
}
}
答:
4赞
jeroen
10/18/2019
#1
mysqli
不支持命名参数,需要问号。
您还需要在执行之前绑定参数,您不能发送具有类似 .PDO
所以你需要类似的东西(对于你的第一个sql查询):
$statement = $con->prepare("SELECT * FROM users WHERE email = ?");
$statement->bind_param("s", $email);
$result = $statement->execute();
评论
2赞
Your Common Sense
10/18/2019
...在fetch之前,您还需要get_result()和fetch_assoc()而不是fetch()
评论
$con->prepare()
由于某种原因失败,因此返回;所以你现在正在尝试做......false
false->execute()