我有一个用户数据库和另一个教师用表。教师将所有属性都用作用户,但也包含电子邮件地址。插入数据库时如何插入信息,确保两者的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);
谢谢你!
答案 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.这具有以下优点。
如果你想把它作为单独的表,那么回答你选择的是好的,但要确保在同一个连接调用中调用最后一个插入id。
答案 4 :(得分:0)
虽然您可以使用LAST_INSERT_ID()
函数来获取最后一个插入ID,但在这种情况下,最好的方法是创建对用户ID表的列引用。
teacher
id | user_id | email
因此teacher.id
可能是任意的,但user_id
列是对user
表的真实引用。
如果使用InnoDB
表,则可以使用Foreign keys