Php 防止不相关的mysql数据

Php 防止不相关的mysql数据,php,mysql,database,Php,Mysql,Database,假设我有两个从不同页面(不同URL)运行的php脚本。看一看: 脚本1: <?php // 15:43:00 - Connect to database. // 15:43:00 - Mysql query: "SELECT user_data FROM users WHERE user_id = 5" // 15:43:00 - sleep(5) // 15:43:05 - Mysql query: "INSERT INTO another_table (table_user_data,

假设我有两个从不同页面(不同URL)运行的php脚本。看一看:

脚本1:

<?php
// 15:43:00 - Connect to database.
// 15:43:00 - Mysql query: "SELECT user_data FROM users WHERE user_id = 5"
// 15:43:00 - sleep(5)
// 15:43:05 - Mysql query: "INSERT INTO another_table (table_user_data, table_user_id) VALUES ($user_data, 5)"

脚本2不会等待脚本1完成。这在编程中称为竞争条件


要在MySQL中处理这种竞争条件,您可以向另一个\u表添加一个
。表\u user\u id
以引用
用户。user\u id
。在这种情况下,如果
用户id
在任何给定时间都不存在于
用户
表中,则插入另一个
表将失败。

虽然它不会改变您的问题,但请注意:
插入
有两个版本:
插入()值()
插入()选择…
。在后一种情况下,可以使用
where
<?php
// 15:43:03 - Connect to database.
// 15:43:03 - Mysql query: "DELETE FROM users WHERE user_id = 5"