PHP / MySQL插入后获取自动增量值

时间:2012-01-02 14:17:34

标签: php mysql

在我的mysql表中,我有一个id-column,设置为autoincrement。

然后我做这样的查询:

INSERT INTO table(id,foo)VALUES('','bar')

然后我怎样才能安全地找出使用此插入生成的ID?

如果我只查询最后一个id,这可能不安全,因为在此期间可能发生了另一次插入,对吧?

11 个答案:

答案 0 :(得分:14)

这里有一个PHP(也是一个MySQL)函数:mysql_insert_id()

http://php.net/manual/en/function.mysql-insert-id.php

答案 1 :(得分:3)

如果您使用PHP获取INSERT语句后返回的auto_incremented值,请尝试使用MySQLi insert_id function。旧版mysql_insert_id()版本已在PHP中弃用。

以下示例:

 <?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TABLE myCity LIKE City");

$query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
$mysqli->query($query);

printf ("New Record has id %d.\n", $mysqli->insert_id);

/* drop table */
$mysqli->query("DROP TABLE myCity");

/* close connection */
$mysqli->close();
?>

答案 2 :(得分:2)

在SQL中使用LAST_INSERT_ID()

    SELECT LAST_INSERT_ID();

在PHP中使用mysql_insert_id()

答案 3 :(得分:2)

答案 4 :(得分:2)

如果您使用mysql_query(“...”),则mysql_insert_id()是您需要的功能。如果您使用其他内容进行查询,则应检查相应的文档

答案 5 :(得分:1)

mysql_insert_id();

此外,您只需运行此查询:

INSERT INTO table (foo) VALUES ('bar')

答案 6 :(得分:1)

因为它是PHP,mysql_insert_id应该做的伎俩

答案 7 :(得分:1)

答案 8 :(得分:1)

在使用mysql_insert_id()时要特别小心,特别是如果您与数据库有多个连接。因为它不获取您插入的查询的值。它获取表的最新ID。可能是另一查询已插入的行。仅当您通过一个连接访问数据库时,才使用此功能。

https://www.php.net/manual/en/function.mysql-insert-id.php

答案 9 :(得分:0)

也是在执行命令之后的PDO中,如下例所示:

$lastId = $dbh->lastInsertId();

点击REF

答案 10 :(得分:0)

简单方法

插入数据:

$sql = "INSERT INTO table (id, foo) VALUES ('', 'bar')";
$conn->query($sql)

获取ID:

return $conn->insert_id;