我有这个MySQL表:
CREATE TABLE web_media_com (
web_media_id INT AUTO_INCREMENT PRIMARY KEY,
web_media_position INT(12),
web_media_headline VARCHAR(76),
web_media_description VARCHAR(680)
);
我想在一个INSERT INTO查询中将主要ID添加到“web_media_position”。所以当“web_media_id”获得id 234时,“web_media_position”应该得到相同的234号。
现在我有了这个:
$mysql_query = "INSERT INTO `web_media_com` (web_media_position, web_media_headline, web_media_description) VALUES
(LAST_INSERT_ID(), '".$web_media_headline."', '".$web_media_description."')";
但这不起作用。有人可以告诉我怎么做这个?感谢!!!
答案 0 :(得分:3)
使用事务来防止并发插入之间的冲突。
在直接(非PHP)sql中,它看起来像:
START TRANSACTION;
INSERT INTO web_media_com(columns)....
SET @entry_id = LAST_INSERT_ID();
UPDATE web_media_com set web_media_position = @entry_id
where web_media_id = @entry_id;
COMMIT;
(注意:我没试过这是一个小提琴.. YMMV ......)
答案 1 :(得分:0)
最适合您的解决方案
$mysql_query =
"INSERT INTO web_media_com
(web_media_position, web_media_headline, web_media_description)
select MAX('id')+1,'".$web_media_headline."','".$web_media_description."'
from web_media_com";