проверьте, укажите c cols, обновите или создайте новую строку, pdo - PullRequest
0 голосов
/ 09 апреля 2020

Попытка проверить указанные значения столбца c перед вставкой новой строки. Но немного запутал PDO ON DUPLICATE KEY UPDATE, поэтому ниже приведена функция вставки.

public function insert_schedule($user_id, $status, $content, $date, $time, $remarks, $created_at){
    $sql = "INSERT INTO schedules (user_id, status, content, return_date, return_time, remarks, created_at) VALUES (?,?,?,?,?,?,?) 
    ON DUPLICATE KEY UPDATE user_id, created_at = VALUES(user_id, created_at)";
    $stmt = $this->connect()->prepare($sql);
    $stmt->execute([$user_id, $status, $content, $date, $time, $remarks, $created_at]); 
}   

Я хочу проверить created_at и user_id перед вставкой новой строки. если created_at уже существует в том же user_id, обновите эту строку. иначе вставьте новую строку. Как я могу исправить вышеуказанную функцию.

1 Ответ

1 голос
/ 09 апреля 2020

Измените запрос на:

INSERT INTO schedules SET user_id=?, status=?, content=?, return_date=?, return_time=?, remarks=?, created_at=?
ON DUPLICATE KEY UPDATE status=?, content=?, return_date=?, return_time=?, remarks=?
$stmt->execute([
    $user_id, $status, $content, $date, $time, $remarks, $created_at,
    $status, $content, $date, $time, $remarks
]);
  • Дубликаты ключей должны быть определены как индексы.
  • Для выполнения необходимы значения в виде дубликатов ключей СНОВА
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...