如果你有很多插入查询流到表格,那么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行!这将导致速度站点减少,因为按此标准选择将没有足够的性能。
所以我看起来有更多表现的方式。我很乐意听取您的建议或解决方案。
答案 0 :(得分:1)
manual说:
int mysql_insert_id([resource $ link_identifier = NULL])
检索上一个查询(通常是INSERT)为AUTO_INCREMENT列生成的ID。
你确定mysql_insert_id有错误吗?
您确定您的专栏是AUTO_INCREMENT吗?
您是否打开了多个连接?如果是,则需要提供$link_identifier
参数。