为啥mysqli参数绑定会报错? [复制]
Posted
技术标签:
【中文标题】为啥mysqli参数绑定会报错? [复制]【英文标题】:Why does mysqli parameter binding give an error? [duplicate]为什么mysqli参数绑定会报错? [复制] 【发布时间】:2020-03-23 01:46:21 【问题描述】:我有一段代码如下:
$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);
【问题讨论】:
我在 mysqli_bind_param 行周围添加了 try catch,在 try 中只有该行。没有发现错误,但浏览器仍然没有加载。对不起,我是 php 新手,什么是错误报告?我也确定绑定行是导致浏览器在被注释掉时加载错误的原因。 1.为了捕获异常,您必须为 mysqli.2 启用异常。你不应该在你的情况下捕捉到那个异常。 【参考方案1】:使用bind_param
,您需要传入参数名称,而不是值。试试:
mysqli_stmt_bind_param($stmt, "sssiss", $name, $description, $due, $zero, $user_id, $id);
$zero = 0;
$user_id = $_SESSION['userID'];
【讨论】:
以上是关于为啥mysqli参数绑定会报错? [复制]的主要内容,如果未能解决你的问题,请参考以下文章