我有这个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
的铭文,我只想更新开始和结束时间。你能帮我吗?现在我每次调用只有插入。
答案 0 :(得分:0)
您的查询基本上应该没问题。 。 。虽然您应该使用所有值的参数。我会把它写成:
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);