-1

我有一个 mysqli 函数,它在表中插入一行。我要找回错误

Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of 
fields in prepared statement

这对我来说很奇怪,因为我认为 insert nto 返回真或假。这是使用 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 错误以及如何修复它。

4

1 回答 1

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()

于 2012-10-01T23:48:25.340 回答