为什么mysqli参数绑定报错?

Why does mysqli parameter binding give an error?

我有一段代码如下:

$sql = "INSERT INTO tasks
                (task_name, description, due_date, state, userID, importID)
                VALUES (?, ?, ?, ?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
mysqli_stmt_bind_param($stmt, "sssiss", $name, $description, $due, 0, $_SESSION['userID'], $id);

当在浏览器中 运行 时,浏览器不加载并且 try catch 语句不起作用,所以我无法确定确切的错误。我有一段几乎完全相同的代码,可以完美运行。唯一的区别是这段代码在 for each 循环中。跟这有关系吗?

编辑: 我忘了提到所有这些都在 if 语句中准备语句。

if (!mysqli_stmt_prepare($stmt, $sql)) {
    header("Location: ../import.php?error=sqlinserterror");
    exit();
} else {
    mysqli_stmt_bind_param($stmt, "sssiss", $name, $description, $due, 0, $_SESSION['userID'], $id);

使用 bind_param 您需要传入参数名称,而不是值。尝试:

mysqli_stmt_bind_param($stmt, "sssiss", $name, $description, $due, $zero, $user_id, $id);
$zero = 0;
$user_id = $_SESSION['userID'];