PHP Prepared Statement不更新行

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

标签: php mysqli prepared-statement

这里发生了什么?以下代码应更新" dodelete" " id"的每一行的列火柴。

没有显示任何错误,但该列根本没有更新,ID也匹配。

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

修改

应该绑定$x而不是$id

2 个答案:

答案 0 :(得分:1)

将我的评论从上面复制到这个答案:

您的意思是绑定$x还是$id?因为您似乎没有将$id设置为任何值。

foreach($_POST['product'] as $x) { // should be "as $id"?
    . . .
        if (!$stmt->bind_param("ii", $deletedVal, $id)) {

答案 1 :(得分:0)

将$ id替换为$ x ['id'](假设id是数组中的键)。