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

1 つの 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 に答える