Php 将主ID保存在MySQL表的另一列中
我有一张MySQL表:Php 将主ID保存在MySQL表的另一列中,php,mysql,Php,Mysql,我有一张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) ); 我想在一次插入到查询中,将主id添加到“web\u media\u位置”。因此,当
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)
);
我想在一次插入到查询中,将主id添加到“web\u media\u位置”。因此,当“网络媒体id”获得id 234时,“网络媒体位置”应获得相同的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."')";
但这是行不通的。有人能告诉我怎么做吗?谢谢 使用事务来防止并发插入之间的冲突 在直接(非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…使用事务来防止并发插入之间的冲突 在直接(非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…最适合您的解决方案
$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";
最适合您的解决方案
$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";
无法从当前查询中获取最后一个\u INSERT\u ID(),必须运行新查询并更新行。为什么希望同一表中的两个字段相同?您好!我想更改项目的显示顺序;)@Thorsten可能更容易创建一个具有所需结构的新tbl,然后插入旧表中的数据并切换表名,然后运行后续查询以更新无法从当前查询中获取最后一个插入ID()的字段,您必须运行新查询并更新行。为什么希望同一表中的两个字段相同?您好!我想更改项目的显示顺序;)@Thorsten可能更容易创建一个具有所需结构的新tbl,然后插入旧表中的数据并切换表名,然后运行后续查询以更新字段。这将不起作用。如果删除了最后一个条目,则MAX('id')+1与自动递增的计数器值不同。这将不起作用。如果删除了最后一个条目,则MAX('id')+1与自动递增的计数器值不同