php - PHP 警告:mysqli_stmt_bind_param():类型定义字符串中的元素数与绑定变量数不匹配
问题描述
我不断收到错误
警告:mysqli_stmt_bind_param():类型定义字符串中的元素数与绑定变量数不匹配
$sql = "INSERT INTO users (usersName, usersEmail, usersUid, usersPwd) VALUES (?, ?, ?, ?);";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
header("location: ../signup.php?error=stmtfailed");
exit();
}
$hashedPwd = password_hash($pwd, PASSWORD_DEFAULT);
mysqli_stmt_bind_param($stmt, "sssss", $name, $email, $username, $pwd, $hashedPwd);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
header("loctaion: ../signup.php?error=none");
}
解决方案
mysqli_stmt_bind_param()的签名是mysqli_stmt_bind_param(mysqli_stmt $stmt, string $types, mixed &$var1 [, mixed &$... ])
.
一般来说,你需要 3 个不同的东西来匹配这个调用:
- 您的 SQL 语句中的数量
?
(您的 4 中有 4 个$sql
) - 变量上的字符数
$types
(你有 5 个字符s
) - 在 2 个第一个参数之后传递的变量数(你有 5 个
$name, $email, $username, $pwd, $hashedPwd
:)
基于此,您要么必须向 SQL 查询添加新参数,要么需要删除传递给语句的变量之一。
推荐阅读
- sql - 一个带有子查询的查询,它使用主查询的数据
- python - 尝试使用键检索值时,Python 请求库给了我一个列表错误
- python - 将 defaultdict(list) 写入每个关键 Python 的文本文件
- python - 如何在调用 kubernetes 的 create_namespaced_pod() 之前以编程方式检查 docker 映像是否存在
- flutter - 当我点击它时没有显示耀斑动画
- python - 如何在雷达图点的末尾添加值?
- spring - 使用 Spring JPA 的自定义 sql 语句
- javascript - 我们如何控制哪些端口将用于在 WebRTC 中创建对等连接?
- ssl - SignalR WSS - 重新加密
- lua - Lua 中的 :string 语法