如果同时插入两个mysql表,是否有可能同时插入另一个用户使表偏移?
例如假设:(在php中)
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "INSERT INTO Name (user_id, name, email)
VALUES (DEFAULT, 'User name', 'john@example.com')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$sql = "INSERT INTO Location (user_id, addressline1, addressline1, postcode)
VALUES (DEFAULT, '123 street', 'anytown, country', '123456')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
如果&#39; John&#39;和Bob&#39; Bob&#39;同时进行此操作。约翰的Name
是否有可能被赋予自动增量ID为1而他的Location
被赋予2,因为鲍勃的Location
被赋予了1即使他的Name
被给予了2。
有点难以解释。
答案 0 :(得分:2)
在你的场景中,考虑到你发布的代码,你担心的事情是可能的,并且肯定会在你获得越来越多的用户时发生。
使用mysqli的insert_id将为您解决此问题。出于这个原因,上次成功插入查询中的自动增量id存储在此处。将您的第二个SQL查询更改为此。
$sql = "INSERT INTO Location (user_id, addressline1, addressline1, postcode)
VALUES ({$conn->insert_id}, '123 street', 'anytown, country', '123456')";
它不再是问题。