在我的mysql表中,我有一个id-column,设置为autoincrement。
然后我做这样的查询:
INSERT INTO table(id,foo)VALUES('','bar')
然后我怎样才能安全地找出使用此插入生成的ID?
如果我只查询最后一个id,这可能不安全,因为在此期间可能发生了另一次插入,对吧?
答案 0 :(得分:14)
这里有一个PHP(也是一个MySQL)函数:mysql_insert_id()
答案 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)
答案 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。可能是另一查询已插入的行。仅当您通过一个连接访问数据库时,才使用此功能。
答案 9 :(得分:0)
答案 10 :(得分:0)
简单方法
插入数据:
$sql = "INSERT INTO table (id, foo) VALUES ('', 'bar')";
$conn->query($sql)
获取ID:
return $conn->insert_id;