繁体   English   中英

PHP-mysql_insert_id()和竞争条件?

[英]PHP - mysql_insert_id() and race conditions?

我认为我在PHP代码中有一个竞争条件,其中mysql_insert_id()返回0-但我不知道为什么。

$insertsess=mysql_query("insert into cior_sessions values ('','$cid','$uid','$tutook',STR_TO_DATE('$sessiondate','%d/%m/%Y'),'$sessionnum')");
$sessionid=mysql_insert_id($insertsess);
echo "<input type=\"hidden\" name=\"sid\" id=\"sid\" value=\"" . $sessionid . "\">";

我无法亲自复制问题,但可以看到其他用户有此问题(由于他们随后所做的事情是SID为0,但不一致)。

我对此的理解是mysql_insert_id将等待$ insertsess的查询完成-这是错误的吗? 如果是这样,我是否需要诸如看门狗循环之类的东西来等待mysql_insert_id返回零以外的值? 这似乎有点愚蠢。 :/

当调用mysql_insert_id()您应该使用连接资源,而不是结果集资源,就像您在发布的代码片段中所做的那样。

$link = mysql_connect('dbhost', 'dbuser', 'dbpass', 'dbname');
$result = mysql_query("Some query here');
$lastId = mysql_insert_id($link); // you have used your result set here

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM