如何在修改mysql数据库时修复“ mysqli_stmt :: bind_param():”

时间:2019-07-13 16:17:41

标签: php mysql

我正在创建一个用户注册系统,并且在我开始修改数据库的那一刻我得到了错误 “警告:mysqli_stmt :: bind_param():类型定义字符串中的元素数量与第41行的/opt/lampp/htdocs/Projectss/01_sarah/index.php中的绑定变量数量不匹配

我已经尝试过使用php文档中涉及向数据库添加数据的每种方法

这是一些代码

       $hash_password = password_hash($password, PASSWORD_DEFAULT);

        $query = "INSERT INTO users (first_name,last_name,email,password) VALUES('$first_name','$last_name','$email','$hash_password')";

        $stmt = $conn->prepare($query);
        if (!$stmt) {
            echo mysqli_error($conn);
        }
        $stmt->bind_param('ssss', $query);
        $stmt->execute(); // execute prepared statement
        $conn->close(); // close connection

    }

预期的结果应该是将信息保存到数据库后不接收任何警告

1 个答案:

答案 0 :(得分:0)

您要在bindParam中传递完整的查询,并且还要在查询中传递值(而不是此值),您需要像这样在bindParam中传递参数。

       $hash_password = password_hash($password, PASSWORD_DEFAULT);

    $query = "INSERT INTO users (first_name,last_name,email,password) VALUES(?, ?, ?, ?)";

    $stmt = $conn->prepare($query);
    $stmt->bind_param('ssss', $first_name, $last_name, $email, $hash_password);
    $stmt->execute(); // execute prepared statement
    $conn->close(); // close connection