将值插入到两个链接的表中(1:M)

时间:2012-06-16 13:34:45

标签: php mysql database

我有两个表用户和电子邮件。一个用户可以拥有多个电子邮件,因此它是一个单独的表(包含user_id作为其主键的一部分)。 我想在用户表中插入多个属性,并在电子邮件表中插入一封电子邮件。 使用mySQL查询的最佳方法是什么? 是否有任何单行命令可以做到这一点?

如果我不能只使用mySql,我也可以使用php脚本

更新 我看到人们误解了我的问题。 我想要做的就是将insert值(如用户名密码)输入到我的用户表中,将一封电子邮件发送到链接的电子邮件表(链接到同一用户的那个) 我想知道在mySQL(以及必要的Php)中最好的方法是什么

我希望答案包括mySQL查询(如果必要,还包括php scrips)

4 个答案:

答案 0 :(得分:2)

最好的方法是在交易中完成。这样,如果电子邮件插入失败,整个事务也将失败。

BEGIN;

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

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

COMMIT;

答案 1 :(得分:1)

您应该执行多个SQL INSERT查询。 我认为进行多种操作monolite的最佳方法是使用SQL事务。

答案 2 :(得分: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";
  }

让我知道它是否有效。

答案 3 :(得分: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 {{1}}描述用户ID {/ 3}}