我正在维护一台运行约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?
请帮忙。感谢。
答案 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版本将删除