获取事务mysql中当前插入行的id号

时间:2014-04-18 13:31:10

标签: php mysql

如果你有很多插入查询流到表格,那么php中的mysql_insert_id函数就会出错。

$r = mysql_query('insert query');
$id = mysql_insert_id();

在上面的例子中你假设id是4097而php进程mysql_insert_id可能会返回4098或4099.这不同是因为mysql_insert_id将返回表的最后一行,而不是在此连接中插入的最后一行。

我需要找到一个解决方案,它获取当前插入ID的最后一个id,而不是表。

我总是编码如下:

$microtime = microtime(true)
$r = mysql_query('insert into table (time,value1,value2,value3) VALUE ($microtime,$val1,$val2,$val3));
$id = mysql_query('select from table where time="$microtime" AND value1=$val1 AND $value2=$val2 AND $value3=$val3);

我需要选择这样的,因为甚至可以在相同的微时间内找到2或3行!这将导致速度站点减少,因为按此标准选择将没有足够的性能。

所以我看起来有更多表现的方式。我很乐意听取您的建议或解决方案。

1 个答案:

答案 0 :(得分:1)

manual说:

  

int mysql_insert_id([resource $ link_identifier = NULL])

     

检索上一个查询(通常是INSERT)为AUTO_INCREMENT列生成的ID。

你确定mysql_insert_id有错误吗?

您确定您的专栏是AUTO_INCREMENT吗?

您是否打开了多个连接?如果是,则需要提供$link_identifier参数。