首页 > 解决方案 > 如何在修改 mysql 数据库时修复“mysqli_stmt::bind_param():”

问题描述

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

我已经尝试使用 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

    }

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

标签: phpmysql

解决方案


您在 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

推荐阅读