0

我正在尝试使用带有 bindValue 的 foreach 语句从 $_POST 数组运行 UPDATE。但表中的字段始终设置为最后一个值。我以为只有使用bindParam才会出现这个问题?我调用绑定函数如下:

public function bind($param, $value, $type = null){
        if (is_null($type)) {
            switch (true) {
                case is_int($value):
                    $type = PDO::PARAM_INT;
                    break;
                case is_bool($value):
                    $type = PDO::PARAM_BOOL;
                    break;
                case is_null($value):
                    $type = PDO::PARAM_NULL;
                    break;
                    default:
                    $type = PDO::PARAM_STR;
            }
        }
        $this->stmt->bindValue($param, $value, $type);
    }

然后使用以下 foreach 语句更新表

        $database->query('UPDATE documents SET
    document=:document,
    dateissued=:dateissued,
    expirydate=:expirydate
    WHERE peopleid=:peopleid');

foreach ($_POST['document'] as $i => $item) {
        $trim_value = trim($item);
                if (!empty($trim_value)){
                                        $database->bind(':document',$_POST['document'][$i]);
                                        $database->bind(':dateissued',$_POST['dateissued'][$i]);
                                        $database->bind(':expirydate',$_POST['expirydate'][$i]);
                                        $database->bind(':peopleid',$_POST['peopleid'][$i]);
                }
                $database->execute();

    }

知道为什么会发生这种情况吗?我对 INSERT 使用相同的功能,它工作正常。任何帮助都会很棒!

4

0 回答 0