mysql_insert_id()很少返回0

时间:2016-02-17 07:00:47

标签: php mysql

我正在维护一台运行约1年的服务器。以前什么都不对。但是,突然之间,mysql_insert_id()中出现错误,它返回0,而不是数据库中的正常行id。这是代码的核心。

$sql = "INSERT INTO $db_table (name,email) VALUES('$name','$email')";

mysql_query($sql);

$current = mysql_insert_id();

另请注意,即使代码没有变化,程序也会在错误发生后再次顺利运行。这对我来说似乎很奇怪。

这是我可能的解释。由于我在公共服务器中托管,许多人使用相同的MYSQL服务器。是不是在mysql_query($sql)时,服务器然后交换进程并让另一个人运行另一个SQL命令,例如,可能是SELECT语句,并且在执行之后,它会交换回来我自己的代码并继续执行,结果为0?

请帮忙。感谢。

1 个答案:

答案 0 :(得分:1)

确保在mysql_query和mysql_insert_id中使用resource_identifier作为参数。 如果不这样做,则按照您的想法使用与mysql服务器的最后一个连接。

$resource = mysql_connect(...);
$sql = "INSERT INTO $db_table (name,email) VALUES('$name','$email')";

mysql_query($sql, $resource);

$current = mysql_insert_id($resource);

请考虑使用mysqli oder PDO,因为不推荐使用mysql_ *函数,将来的PHP版本将删除