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