我有一些表格如下:
人:
--------------------
| Person |
--------------------
| IDPerson |
| IDName |
| IDAndress |
-------------------
名称:
--------------------
| Name |
--------------------
| IDName |
| FirstName |
| MiddleName |
| LastName |
-------------------
安德丝:
--------------------
| Andress |
--------------------
| IDAndress |
| Hamlet |
| Ward |
| District |
| City |
| Zipcode |
-------------------
帐户:
--------------------
| Account |
--------------------
| IDAccount |
| IDPerson |
| Username |
| Password |
| Level |
-------------------
现在,如果您想添加新帐户,我们需要创建一个新人。要创建新人,我们需要创建一个新的Name和Andress。然后添加idName,IDAndress Person表,然后添加到表IDPerson Account。如何获取刚添加的idName,IDAndress,IDPerson?假设您获得表中最大的ID,如果有更多人同时注册,则会发生错误。有人可以帮帮我吗?
答案 0 :(得分:3)
如果您使用的是PHP和MySQLi,则可以使用mysqli::insert_id
$mysqli = new mysqli('host', 'username', 'password', 'database');
$sql = "INSERT INTO Person (name, address) VALUES ('test name', 'some address')";
$result = mysqli->query($sql);
echo "ID of last inserted record is: " . mysqli->insert_id;
希望这有帮助
答案 1 :(得分:1)
Mysqli_insert_id可以达到目的。首先运行insert查询以在表name
中插入值,并将此表的Id存储在变量中。
$nameid = mysqli_insert_id($link); // where $link is the handle for the db connection
然后运行insert查询以在表andress
中插入值,并将此表的Id存储在另一个变量中。
$andressid = mysqli_insert_id($link); // where $link is the handle for the db connection
最后,您可以根据需要使用这些变量。这个link会给你一个想法。
答案 2 :(得分:0)
您可以使用以下sql语句:
INSERT INTO address VALUES ('a','b','c','d','e') SELECT id
这是一个插入输入值的查询,但同时返回id。由于这是使用一个查询完成的,因此在您获取ID之前,没有其他用户添加其地址的风险。