使用mysqli的PHP更新表单

时间:2015-05-07 07:18:32

标签: php mysql mysqli

我是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");
  }
}

2 个答案:

答案 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);
相关问题