我是PHP的新手,我需要一些帮助。我创建了一个名为 Home.php 的表单,该表单接受ID,name&文件上传作为输入,它添加到mysql中。它成功添加。我想执行更新操作,以便用户想要更新任何字段。所以我想要的是它必须在db中更新这3个字段。 但是我在Process.php中遇到以下错误。
错误:警告:mysqli_stmt :: bind_param():变量数与预准备语句中的参数数量不匹配
这是我的代码的相关部分:
$sql = "UPDATE info SET id=?, name=?, upload=? WHERE id=?";
if(!($stmt = $mysqli->prepare($sql)))
{
die("Unable to prepare statement");
}
else
{
$stmt->bind_param("iss", $id, $name, $upload);
if($stmt->execute())
{
echo "Successfully updated";
}
else
{
die("Update failed");
}
}
答案 0 :(得分:3)
需要4个参数
$sql = "UPDATE info SET id=?, name=?, upload=? WHERE id=?";
即使id应该相同,因为你没有给它起名字,你必须在你的绑定中添加2次
$stmt->bind_param("issi", $id, $name, $upload, $id);
应该有效
您应该检查在语句中添加命名参数以避免它。
答案 1 :(得分:0)
此错误是由
引起的 $sql = "UPDATE info SET id=?, name=?, upload=? WHERE id=?";
此查询中有绑定4参数
但在你只绑定3个参数
$stmt->bind_param("iss", $id, $name, $upload);
这里应该是
$stmt->bind_param("issi", $id, $name, $upload,$id);
根据我们的讨论,您的最终查询将是
$sql = "UPDATE info name=?, upload=? WHERE id=?";
$stmt->bind_param("ssi", $name, $upload,$id);