0

ユーザーとメールの2つのテーブルがあります。1人のユーザーが複数の電子メールを持つことができるため、個別のテーブル(主キーの一部としてuser_idを含む)。複数の属性をユーザーテーブルに挿入し、1つのメールをメールテーブルにも挿入したいと思います。mySQLクエリでそれを行うための最良の方法は何ですか。それを行う単一行コマンドはありますか?

mySqlだけではそれができない場合は、phpスクリプトも使用できます

更新 人々が私の質問を誤解しているようです。私がやりたいのはinsert、ユーザー名パスワードをユーザーテーブルに、1通のメールをリンクされたメールテーブル(同じユーザーにリンクされているもの)に設定することだけです。mySQL(および必要に応じてPhp)でそれを行うための最良の方法は何でしょうか。

答えにmySQLクエリ(および必要に応じてphpスクリプトも)を含めたいのですが

4

4 に答える 4

2

最良の方法は、トランザクションでそれを行うことです。そうすれば、電子メールの挿入が失敗した場合、トランザクション全体も失敗します。

BEGIN;

INSERT INTO users (name)
VALUES ('Emil Vikström');

INSERT INTO emails (user_id, email)
VALUES (LAST_INSERT_ID(), 'email address');

COMMIT;
于 2012-06-16T14:06:45.863 に答える
1

あなたはこれを行うことができます;

$query = "INSERT INTO users (name) VALUES ("you username");
$result = mysql_query($query);
if($result)
{
   $generated_userID = mysql_insert_id(); // php function to get the last generated ID by previous result
    $query = "INSERT INTO emails(user_ID, email) VALUES ($generated_userID, "you email value");
    $result = mysql_query($query);
    if($result)  
       echo "email inserted in email table";
     else
      {
        echo "problem inserting in email table";
         return;
       }
 }
 else
 {
    echo "can't insert into users table";
  }

それが機能するかどうか教えてください。

于 2012-06-16T14:17:10.823 に答える
1

複数の SQL INSERT クエリを実行する必要があります。複数の操作をモノライトで行う最善の方法は、SQL トランザクションを使用することだと思います。

于 2012-06-16T13:43:44.957 に答える
0

このように、複数の値と複数の行を挿入できますが、異なるテーブルに複数の挿入を行うものを見たことがありません。

 INSERT INTO example
      (example_id, name, value, other_value)
    VALUES
      (100, 'Name 1', 'Value 1', 'Other 1'),
      (101, 'Name 2', 'Value 2', 'Other 2'),
      (102, 'Name 3', 'Value 3', 'Other 3'),
      (103, 'Name 4', 'Value 4', 'Other 4');

最善の方法は、ユーザーに行を挿入して、ここmysql_insert_idで説明されているユーザー ID を取得することです。

于 2012-06-16T13:45:43.473 に答える