0
我正在使用MySQL查询插入,或更新记录(如果它已存在)。INSERT ... ON DUPLICATE KEY UPDATE - 不更新特定字段?
问题是,我不想更新我的'created'
datetime字段。
我的事件数据:
$event = [
'userId' => $this->userId,
'googleEventId' => $googleEventId,
'isAppointment' => $isAppointment,
'eventTitle' => $title,
'eventLocation' => $location,
'eventDescription' => $description,
'eventStart' => $start,
'eventEnd' => $end,
'created' => date('Y-m-d H:i:s'), // This field should be ignored when updating
'updated' => date('Y-m-d H:i:s')
];
我使用这个功能来插入,或插入更新的重复键($update
参数):
public function insert($table, $data, $update = 0)
{
ksort($data);
$fieldNames = implode(', ', array_keys($data));
$fieldValues = ':' . implode(', :', array_keys($data));
$updateOnDuplicate = '';
if ($update)
{
$updateOnDuplicate = ' ON DUPLICATE KEY UPDATE ';
foreach ($data as $key=> $value) {
$updateOnDuplicate .= "$key=:$key,";
}
$updateOnDuplicate = rtrim($updateOnDuplicate, ',');
}
$stmt = $this->prepare("INSERT INTO $table ($fieldNames) VALUES ($fieldValues) $updateOnDuplicate");
foreach ($data as $key => $value)
{
$stmt->bindValue(":$key", $value);
}
$stmt->execute();
return $stmt->rowCount();
}
我想我需要检测莫名其妙地在这个函数里面有'created'
字段。
获取已存储的信息,然后将该值作为更新后的值 – NoLiver92
表中您尝试插入的键和您当前拥有的INSERT语句? – Ashalynd
未更新($ event [$ created])?你如何强制你的查询..我们不能猜到看到只有1阵列..显示查询如何 – Svetoslav