我正在尝试使用带有 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 使用相同的功能,它工作正常。任何帮助都会很棒!