2012-08-13 121 views
0

我有一个正确运行的查询,它将一行插入到具有自动增加主键的表中。但是mysql_insert_id()总是以'0'出现。mysql_insert_id()返回'0'

$this->event->insertEvent($event); 
$lastid = mysql_insert_id(); 

我在网站的其他区域使用了相同的命令,它的工作完美。 这背后的原因是什么?

+0

文档说'由成功前面的查询为AUTO_INCREMENT列生成的ID,0如果先前的查询不产生一个AUTO_INCREMENT值,或FALSE如果没有mysql连接建立。“你是否在该函数内运行另一个查询来覆盖最后的插入ID结果? – drew010 2012-08-13 22:41:36

+0

你可以显示你运行插入的方法吗?这可能是相关的。 – Tchoupi 2012-08-13 22:43:33

+1

从设计角度来看,它会更清晰,以便您的'insertEvent()'返回您的id – zerkms 2012-08-13 22:47:37

回答

0

从PHP页面,并采取可能的东西可以做,以排除一件事如果不解决这个问题:http://www.php.net/manual/en/function.mysql-insert-id.php#94511

如果mysql_insert_id()返回0或空的,请检查您也有 包括链接标识符。它是可选的,但如果你有一个数据库连接超过 ,那么这是必要的。

例如:mysql_insert_id($康恩)

+0

只有一个数据库时是否需要? – Nicole 2012-08-13 23:04:04

+0

您可以有多个连接到一个数据库。没有参数的mysql_insert_id()会使用最后一次连接,但INSERT查询可能会从另一个连接执行,所以mysql_insert_id()将返回0 – CyberDem0n 2012-08-14 05:51:03