php - 如何在修改 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
}
预期的结果应该是在将信息保存到数据库后不会收到任何警告
解决方案
您在 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
推荐阅读
- javascript - Django - 将列表作为onlick 参数传递| 它有效,但有错误
- angular10 - Angular10 ng-class 与类标签为什么不同?
- c# - iText7 Image Quality Optimizer not working as document
- python - Pandas,如何将列转换为包含浮点数、字符串和无法转换的字符串的浮点数?
- javascript - 尝试对具有数据库依赖性的 Node 应用程序进行单元测试时感到困惑
- azure - 通过 PUT Block Azure Blob 存储上传时 Zip 文件格式不受支持
- c++ - 0x7C29F7A9 ( ucrtbased.dll )Exception throw at (Project3.exe):0xC0000005: access violation while writing location 0x00740000
- javascript - 在javascript中用对象包装响应数据
- javascript - Node js如何在同一文件夹中追加文件
- python - 根据其他列上最常见的值更改列的值