Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO::lastInsertId是否具有快速插入的可靠性?_Php_Mysql_Pdo_Yii - Fatal编程技术网

Php PDO::lastInsertId是否具有快速插入的可靠性?

Php PDO::lastInsertId是否具有快速插入的可靠性?,php,mysql,pdo,yii,Php,Mysql,Pdo,Yii,我使用的是Yii PHP框架,它有一个函数PDO::lastInsertId,这显然只是PDO::lastInsertId的一个实现。如果我的应用程序可以同时从数千个用户中快速插入数据,那么这个函数能够可靠地获取我刚才插入的数据的自动递增的行ID吗 我需要得到我刚刚插入的行的id,以便在插入本身之后做一些工作,但是要确保如果插入率非常高,它不会导致不一致的结果 谢谢 当然可以,不用担心,但是您必须确保在insert查询之后询问lastInsertId。在此期间,不应在该连接上执行其他查询,每个P

我使用的是Yii PHP框架,它有一个函数PDO::lastInsertId,这显然只是PDO::lastInsertId的一个实现。如果我的应用程序可以同时从数千个用户中快速插入数据,那么这个函数能够可靠地获取我刚才插入的数据的自动递增的行ID吗

我需要得到我刚刚插入的行的id,以便在插入本身之后做一些工作,但是要确保如果插入率非常高,它不会导致不一致的结果


谢谢

当然可以,不用担心,但是您必须确保在insert查询之后询问lastInsertId。在此期间,不应在该连接上执行其他查询,每个PHP进程必须有单独的连接


此外,如果您认为一个表每秒将有成百上千个插入,考虑不要使用索引或使用最小数量的索引。在MyISAM表的情况下。

在insert查询之后立即进行lastInsertId()调用,我担心的是其他同时进行的用户。默认情况下,PHP进程是否有单独的连接?(我想最具体的是yii?)。谢谢你回复我。>PHP进程默认有单独的连接吗?是的。+1件非常好的服装。也许暂时删除索引可以提高插入速度(我想是吧)。我将索引保持在最小值,在这一点上,我在这个表上只有2个,这两个都是必需的。不过我用的是InnoDB。插入和读取都非常频繁,因此行级锁定比表级锁定更具吸引力。再次感谢@stivlo。