Php 同一页MYSQLI上有多个准备好的语句
我的代码有一些问题。似乎我不能有多个准备好的陈述,这对我来说有点不寻常 如果您能发现错误或帮助我,我将非常高兴,因为我无法解决问题 我的错误: 致命错误:在第37行的/Applications/XAMPP/xamppfiles/htdocs/platform/creating_user.php中对布尔值调用成员函数bind_param() 我试图检查用户的电子邮件是否已经存在于数据库中,然后注册用户 当我不执行$check时,代码工作正常Php 同一页MYSQLI上有多个准备好的语句,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,我的代码有一些问题。似乎我不能有多个准备好的陈述,这对我来说有点不寻常 如果您能发现错误或帮助我,我将非常高兴,因为我无法解决问题 我的错误: 致命错误:在第37行的/Applications/XAMPP/xamppfiles/htdocs/platform/creating_user.php中对布尔值调用成员函数bind_param() 我试图检查用户的电子邮件是否已经存在于数据库中,然后注册用户 当我不执行$check时,代码工作正常 $check->execute(); 我还想对我
$check->execute();
我还想对我的工作流程(我的代码构建方式)做出一些回应。可以吗
谢谢
<?php
$db = new mysqli("localhost","root","","database");
session_start();
if (isset($_POST)){
if(
!empty($_POST["name"])
& !empty($_POST["city"])
& !empty($_POST["zip"])
& !empty($_POST["email"])
& !empty($_POST["tel"])
& !empty($_POST["password"])
) {
$name = encrypt($_POST["name"]);
$city = encrypt($_POST["city"]);
$zip = encrypt($_POST["zip"]);
$email = encrypt($_POST["email"]);
$tel = encrypt($_POST["tel"]);
$password = encrypt($_POST["password"]);
if(!empty($name) && !empty($city) && !empty($zip) && !empty($email) && !empty($tel) && !empty($password)) {
$check = $db->prepare("SELECT email FROM user WHERE email = ?");
$check->bind_param('s', $email);
$check->execute();
if ($check->num_rows == 1) {
header("Location: index.php");
die();
} else {
$insert = $db->prepare("INSERT INTO user (name, city, zip, email, tel, password, created) VALUES (?, ?, ?, ?, ?, ?, NOW())");
$insert->bind_param("ssssss",$name, $city, $zip, $email, $tel, $password);
if ($insert->execute()){
$db->close();
$_SESSION["user"] = $email;
header("Location: created_user");
die();
} else {
header("Location: create-user");
die();
}
}
} else {
header("Location: create-user");
die();
}
} else {
header("Location: create-user");
die();
}
} else {
header("Location: create-user");
die();
}
?>
在php.net上我找到了
mysqli::prepare()返回语句对象,如果出现错误,则返回FALSE
发生了
这意味着$db
对象有问题。这可以是:
- 密码错误
- 错误的用户名
$db->prepare
返回一个布尔值
这主要意味着数据库连接有问题。如果(!$check=$db->prepare(“SELECT email FROM user WHERE email=?”){echo$db->error;exit(0);}为诊断添加此值