PHP-mysql\u insert\u id()和竞争条件?
我想我在一些PHP代码中得到了一个竞争条件,mysql_insert_id()返回0,但我不知道为什么PHP-mysql\u insert\u id()和竞争条件?,php,mysql,race-condition,mysql-insert-id,Php,Mysql,Race Condition,Mysql Insert Id,我想我在一些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 "<inpu
$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 . "\">";
$insertsess=mysql_查询(“插入cior_会话值('''$cid','$uid','$tutook',STR_TO_DATE('$sessiondate','%d/%m/%Y'),'$sessionnum');
$sessionid=mysql\u insert\u id($insertsess);
回声“;
我自己还不能复制这个问题,但可以看到其他用户也有(因为他们随后所做的是SID为0,但并不一致)
我的理解是mysql\u insert\u id将等待$INSERTSES的查询完成-这是错误的吗?如果是这样的话,我是否需要像看门狗循环这样的东西,它等待mysql\u insert\u id返回非零的值?这似乎有点愚蠢/ 当您调用
mysql\u insert\u 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
好的-如果多人同时使用该应用程序,这是如何工作的?例如,$link可能有很多并发用户,每次生成新页面时,每个PHP线程都会创建一个新的链接,并在页面完成时将其删除。每个线程一次只为一个用户服务,尽管它可能为多个用户服务,所以不会共享linkAha,这是有道理的。可爱的东西-谢谢你的帮助!我会投票——唉,纽比。很抱歉我会试着记得在我有能力的时候回来投票!这个问题是在20多分钟前提出的,现在还没有人发表标准的“请不要使用不推荐的
mysql\uquot
functions”评论:)