0

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

如果我不能只用 mySql 做到这一点,我也可以使用 php 脚本

更新 我看到人们误解了我的问题。我要做的就是将insert用户名密码之类的值放入我的用户表中,并将一封电子邮件放入链接的电子邮件表中(链接到同一用户的那个)

我希望答案包括 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

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

于 2012-06-16T13:43:44.957 回答
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 回答
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');

最好的办法是在用户中插入一行,检索用户 ID,并在此处mysql_insert_id描述

于 2012-06-16T13:45:43.473 回答