mysqli_insert_id可以被多个脚本一次击中数据库打破吗?

时间:2015-01-21 16:11:16

标签: php mysqli

假设我有一个脚本,它将在多个系统上一致地运行并用于将一段数据插入到具有AUTO INCREMENTING索引的mySQL表中。让我们说脚本看起来像这样:

$db = new mysqli('host', 'user', 'password', 'db');

$value1 = (Some Value);
$value2 = (Some Other Value);

$query = "INSERT INTO `my_table` (`column1`, `column2`) VALUES ('$value1', '$value2')";
$db->query($query);

// Now I want to grab the index
$session_id = mysqli_insert_id($db);

// Here I will do a bunch of calculations
// ...
// ...
// and get...

$value3 = (Result Of Calculations);

// And now I want to add value3 to the same row in the table so I do:
$query = "UPDATE `my_table` SET `column3`='$value3' WHERE `id`='$session_id'";
$db->query($query);

现在我的问题是,如果我有100个或1000个用户同时运行此脚本,如果脚本实例上的第一个INSERT发生在另一个实例到达之前,则id可能会失去同步 mysqli_insert_id($ db); 调用。

如果答案是"是的,这可能会破坏功能,"请为上述情况提供更好的解决方案。

如果答案是"否则不会破坏功能,"请解释为什么它不会赢。

我已经在我的开发机器上测试了这个代码并且它运行良好但是我担心在生产中它可能会失败。

谢谢!

0 个答案:

没有答案