提问人:Sonny's Kitchen 提问时间:10/2/2022 最后编辑:DharmanSonny's Kitchen 更新时间:10/2/2022 访问量:1410
未捕获的 ArgumentCountError:类型定义字符串中的元素数必须与绑定变量数匹配 预准备语句 [duplicate]
Uncaught ArgumentCountError: The number of elements in the type definition string must match the number of bind variables Prepared statement [duplicate]
问:
我已经检查了我的代码 100 次,但没有找到任何解决方案,我已经检查了很多网站以找到它的解决方案,但没有找到任何东西。这是一个注册系统,我正在努力使其成为完全最简单的注册系统,我的意思是在我的网站中任何地方使用我的功能的最简单方法。我创建了一个名为 database 的函数,其中我创建了一个 switch 语句,该语句将仅通过一个函数从数据库中创建、连接、更新、删除用户数据,但我在 Bind_param 时收到错误。
未捕获的 ArgumentCountError:类型定义字符串中的元素数必须与绑定变量数匹配
$query = "INSERT INTO $table (";
foreach ($tableNames as $key => $value) {
$query .= "$key, ";
}
$query = substr($query, 0, -2);
$query .= ") VALUES (";
$j = 0;
foreach ($tableNames as $key1 => $value2) {
for ($a=0; $a < $j; $a++) {
++$j;
}
$query .= "?, ";
}
$query = substr($query, 0, -2);
$query .= ")"; //correct working
// echo $query;
$stmt = $conn->prepare("$query");
$fieldsNumb = "";
$l = 0;
foreach ($tableNames as $keyss => $valuess) {
for ($k=0; $k < $l; $k++) {
++$l;
}
$fieldsNumb .= "s";
}
$fields = "";
foreach ($tableNames as $keys => $values) {
$fields .= "$"."$keys".",";
}
// echo $fields;
$fields = substr($fields, 0, -2);
// echo $query;
$stmt->bind_param("$fieldsNumb", $fields);
// set parameters and execute
$stmt->execute();
msg("", "success", "Signedup success");
$stmt->close();
$conn->close();
答: 暂无答案
评论
$fields
in 需要是一组变量,而不是字符串。IIUC,你应该在你拥有的地方使用$stmt->bind_param("$fieldsNumb", $fields);
...$tableNames
$fields
: Uncaught ArgumentCountError: mysqli_stmt::bind_param() does not accept unknown named parameters in
...array_values($tableNames)