0

我有这个 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."')";

但这不起作用。有人可以告诉我我该怎么做吗?谢谢!!!

4

2 回答 2

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 ......)

于 2013-07-01T15:49:36.300 回答
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";
于 2013-07-01T16:04:24.120 回答