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