使用mysql插入数据时获取ID

时间:2014-04-02 12:39:30

标签: php mysql

我有一些表格如下:

人:

--------------------
|     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,如果有更多人同时注册,则会发生错误。有人可以帮帮我吗?

3 个答案:

答案 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之前,没有其他用户添加其地址的风险。