【问题标题】:Prepared Statement Cannot pass parameter 2 by reference. [duplicate]Prepared Statement 不能通过引用传递参数 2。 [复制]
【发布时间】:2014-01-25 13:41:02
【问题描述】:

得到以下错误:

致命错误:无法通过引用传递参数 2 C:\xampp\htdocs\ppa\php\process_images.php 在第 29 行

只是尝试更新一条数据库记录,如下调试代码

$id = (int)$x;
echo $id.". Type: ".gettype($id);

产生这个: 4. 类型:整数 所以变量是正确的类型。

这是我的代码

if (isset($_POST['delete'])) {
    //Delete the image, first update the database, then move the image to a new folder. 
    foreach($_POST['product'] as $x) {
        if ($stmt = $mysqli->prepare("UPDATE images SET dodelete = ? WHERE id = ?")) {
            $id = (int)$x;
            echo $id.". Type: ".gettype($id);
            $stmt->bind_param("ii", 1, $id);   <---- line 29
            $stmt->execute();
            $stmt->close();
        } else {
            echo "Unable to delete image!";
        }
    }
}

起初我直接从 foreach 语句绑定 $x 变量,我认为这是问题所在,因为错误说它不能通过引用传递参数,但正如你所见,我创建了一个新变量 $id。

【问题讨论】:

  • processimage.php 代码在哪里?

标签: php mysqli prepared-statement


【解决方案1】:
$stmt->bind_param("ii", 1, $id);
                     ---^

因为1不是参数,是整数。您需要改用 bindValue。

【讨论】:

  • 谢谢,我把它改成了 $deletedVal = 1; $stmt->bind_param("ii", $deletedVal, $id);
猜你喜欢
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
  • 2014-05-31
  • 2020-02-05
  • 2012-11-04
  • 2010-10-07
  • 1970-01-01
相关资源
最近更新 更多