Php 同一页MYSQLI上有多个准备好的语句

Php 同一页MYSQLI上有多个准备好的语句,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,我的代码有一些问题。似乎我不能有多个准备好的陈述,这对我来说有点不寻常 如果您能发现错误或帮助我,我将非常高兴,因为我无法解决问题 我的错误: 致命错误:在第37行的/Applications/XAMPP/xamppfiles/htdocs/platform/creating_user.php中对布尔值调用成员函数bind_param() 我试图检查用户的电子邮件是否已经存在于数据库中,然后注册用户 当我不执行$check时,代码工作正常 $check->execute(); 我还想对我

我的代码有一些问题。似乎我不能有多个准备好的陈述,这对我来说有点不寻常

如果您能发现错误或帮助我,我将非常高兴,因为我无法解决问题

我的错误:

致命错误:在第37行的/Applications/XAMPP/xamppfiles/htdocs/platform/creating_user.php中对布尔值调用成员函数bind_param()

我试图检查用户的电子邮件是否已经存在于数据库中,然后注册用户

当我不执行$check时,代码工作正常

$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);}为诊断添加此值