这有点看起来很复杂,我想获得已处理查询的id列值。
示例:
$qu = mysql_query("INSERT INTO msgs (msg,stamp) VALUES('$v1','$v2')");
我希望在将信息存储在数据库中后获取此查询的ID。
如果不可能,那么获取最后一个ID记录并添加1将是安全且可靠的吗?
注意:我使用PHP和mySQL
由于
答案 0 :(得分:2)
以下是关于此的MySQL文档。
http://dev.mysql.com/doc/refman/5.1/en/getting-unique-id.html
答案 1 :(得分:2)
如果是auto_increment列,请使用PHP函数mysql_insert_id。
答案 2 :(得分:1)
如果你在PHP中使用标准的mysql,你所要做的就是使用mysql_insert_id()
将资源$link
作为参数(你的mysql连接)
http://php.net/manual/en/function.mysql-insert-id.php
基本用法:
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');
mysql_query("INSERT INTO mytable (product) values ('some product')");
echo 'Last inserted record has id of ' . mysql_insert_id();
?>
答案 3 :(得分:1)
不,获取最高ID并添加1并将其用作新ID是不安全的。这就是众所周知的竞争条件。如果两个查询同时尝试执行此操作,则可能是它们都选择了SAME最高ID,两者都尝试添加1,然后BOTH尝试使用相同的id(这将是坏的)。
使用AUTO_INCREMENT字段要好得多,你可以按照以下方式在PHP中检索插入的id(来自http://php.net/manual/en/function.mysql-insert-id.php):
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');
mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d\n", mysql_insert_id());
?>
答案 4 :(得分:1)
以下是代码:
$qu = mysql_query("INSERT INTO msgs (msg,stamp) VALUES('$v1','$v2')");
$recent_id = mysql_insert_id();
变量recent_id就是你要找的。
获取最后一个ID记录并添加1可能不安全且不保证。如果你真的想要安全地使用它,你最好使用我指出的解决方案。
希望它有所帮助。
答案 5 :(得分:0)
答案 6 :(得分:0)
检查here如果你使用mysqli for php
没问题