我有一个mysqli函数,它将一行插入表中。我正在收回错误
Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of
fields in prepared statement
这对我来说很奇怪,因为我认为插入nto会返回true或false。这是使用sql语句的函数。
function add_project_deadline ($mysqli, $project_id, $deadline) {
if ($stmt = $mysqli->prepare("INSERT INTO `project_deadline` (project_id, deadline)
VALUES (?, ?)")){
$stmt->bind_param('is', $project_id, $deadline);
$stmt->execute();
$stmt->bind_result($return);
$stmt->close();
return $return;
} else {return false;}
}
我的问题是为什么我会收到此bind_result错误以及如何修复它。
答案 0 :(得分:1)
由于您执行的INSERT
查询没有任何结果,因此您无需或使用bind_result
来获取数据。 bind_result
用于绑定SELECT语句中使用的列。
mysqli_stmt::execute()
在成功时返回true
或在失败时返回false
,因此只需将其值分配给您的$return
变量。
如果execute()
返回false,则INSERT
语句由于某种原因失败。如果它返回true
,则INSERT
成功,您可以通过查看语句对象的mysqli_stmt::$affected_rows
属性来确定插入的行数。
这就是为什么你得到这个错误,希望它有所帮助。您可以在mysqli_stmt::execute()
的手册页上找到大部分此类信息。