插入查询并期待多个结果?

时间:2012-10-01 23:25:03

标签: php sql insert mysqli

我有一个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错误以及如何修复它。

1 个答案:

答案 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()的手册页上找到大部分此类信息。