Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将主ID保存在MySQL表的另一列中_Php_Mysql - Fatal编程技术网

Php 将主ID保存在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位置”。因此,当

我有一张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位置”。因此,当“网络媒体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与自动递增的计数器值不同