INSERT INTO两个不同的表,但具有相同的ID?

时间:2014-04-08 11:52:10

标签: php mysql

我有一个用户数据库和另一个教师用表。教师将所有属性都用作用户,但也包含电子邮件地址。插入数据库时​​如何插入信息,确保两者的ID相同?

该ID目前处于自动关联状态。

这就是我现在所拥有的:

$sqlQuery="INSERT INTO user(firstName,lastName,DOB,title,password,classRoomID) 
    VALUES('$myFirstName','$myLastName','$myDOB','$myTitle','$newPassword','$myClassRoom')";
    $result=mysql_query($sqlQuery);

$sqlQuery = "INSERT INTO teacher(email) VALUES ('$myEmail')";
$result=mysql_query($sqlQuery);
谢谢你!

5 个答案:

答案 0 :(得分:3)

使用MYSQL函数LAST_INSERT_ID() 或者php mysql http://ro1.php.net/manual/en/function.mysql-insert-id.php

答案 1 :(得分:1)

试试这个:

$sqlQuery="INSERT INTO user(firstName,lastName,DOB,title,password,classRoomID) 
    VALUES('$myFirstName','$myLastName','$myDOB','$myTitle','$newPassword','$myClassRoom')";
    $result=mysql_query($sqlQuery);

    $id = mysql_insert_id();

$sqlQuery = "INSERT INTO teacher(id, email) VALUES (' $id ','$myEmail')";
$result=mysql_query($sqlQuery);

答案 2 :(得分:1)

在第一次插入后,获取最后插入的id:

$last_id = mysqli_insert_id(); // or mysql_insert_id() if you're using old code

或者您可以扩展第二个查询并使用mysql的集成LAST_INSERT_ID()函数:

$sqlQuery = "INSERT INTO teacher(id, email) VALUES ((SELECT LAST_INSERT_ID()), '$myEmail')";

答案 3 :(得分:1)

为什么要为教师使用单独的表格。相反,您可以在用户表中添加电子邮件字段,并在其他字段中添加标记(T(对于教师)和U(对于用户)。默认可以是U.这具有以下优点。

  1. 不会增加表格大小,因为电子邮件将是varchar
  2. 删除维护两个表的额外开销。
  3. 可以使用相同的ID
  4. 如果你想把它作为单独的表,那么回答你选择的是好的,但要确保在同一个连接调用中调用最后一个插入id。

答案 4 :(得分:0)

虽然您可以使用LAST_INSERT_ID()函数来获取最后一个插入ID,但在这种情况下,最好的方法是创建对用户ID表的列引用。

teacher

id | user_id | email

因此teacher.id可能是任意的,但user_id列是对user表的真实引用。

如果使用InnoDB表,则可以使用Foreign keys

使数据库保持一致