Обновите строку, если вставка уже была сделана

У меня есть этот SQL:

$s_sql = sprintf("INSERT INTO %s (id, id_jack, start_time, end_time)
VALUES (%d, %d, '%s', '%s') ON DUPLICATE KEY UPDATE start_time = '%s', end_time = '%s'",
'table',
$id,
$id_jack,
$startDate,
$endDate,
$startDate,
$endDate);

Я хочу, если у меня уже есть в таблице надпись с id а также id_jack Я хочу обновить только время начала и окончания. Не могли бы вы мне помочь? Теперь у меня есть только вкладыши на каждый звонок.

-1

Решение

Ваш запрос в принципе должен быть в порядке. , , хотя вы должны использовать параметры для всех значений. Я бы написал это так:

INSERT INTO %s (id, id_jack, start_time, end_time)
VALUES (%d, %d, '%s', '%s')
ON DUPLICATE KEY UPDATE start_time = VALUES(start_time)
end_time = VALUES(end_time);

Таким образом, вам не нужно дублировать аргументы (что может привести к ошибкам).

Чтобы это работало, вам нужен уникальный индекс / первичный ключ. Я не уверен, если вам нужен один на (id, id_jack) или два (id) а также (id_jack), Однако их необходимо создавать отдельно от приведенного выше запроса:

create unique index unq_t_id_idjack on t(id, idjack);
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector