Prepared Statement无法通过引用传递参数2。

时间:2014-01-07 18:23:25

标签: php mysqli prepared-statement

收到以下错误:

  

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

只需尝试更新数据库记录,就可以使用以下调试代码

$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。

1 个答案:

答案 0 :(得分:4)

$stmt->bind_param("ii", 1, $id);
                     ---^

这是因为1不是参数,它是一个整数。你需要使用bindValue。