在我的脚本中,我将一些数据插入mysql:
$query = "INSERT INTO recent_queries (`type`, `fetched`, `expires`) VALUES ('$type', '$fetched', '$expires')";
$mysqli->query($query);
工作正常。一个新行添加到数据库中。每次刷新页面时,都会添加一行。但是,如果我复制URL,打开一个新选项卡,将URL粘贴到地址栏中并转到页面,则会添加两个新行。
有时我注意到为一个页面加载添加了三到四行,但很难确定何时发生这种情况。打开新选项卡后,它总是会插入两个新行,因此很容易确定。
为什么页面可能会多次加载,如何防止这种情况发生?
答案 0 :(得分:2)
每当HTTP请求改变服务器上的信息时,它应该是POST,PUT或DELETE(通常是POST)。这就是通常避免这个问题的方法。
您可能还想查看PDO以避免SQL注入攻击。
答案 1 :(得分:0)
通常isset($ _ POST)用于避免此类情况,您也可以尝试创建变量
$affectedRows = $mysqli->affected_rows;
将值存储在会话变量或其他内容中,或者另一个漫长的方法是创建临时txt文件并在插入之前检查file_exists是否每次都存在。 if($ affectedRows> 0)
{
//Do what you want to do
}else
{
Reinsert the Data
}