MySQL クエリを使用してレコードを挿入するか、レコードが既に存在する場合は更新します。
'created'
問題は、日時フィールドを更新したくないことです。
私のイベントデータ:
$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'
どうにかしてこの関数内のフィールドを検出する必要があると思います。