【发布时间】:2011-02-15 19:05:13
【问题描述】:
我注意到 PHP 已经插入了两次相同的数据,即使是一个简单的查询,下面是我的索引文件:
<?php
require("constants.php"); //contains database settings
$database = new PDO("$type:host=$host;dbname=$name", $user, $pass);
$query = $database->prepare('INSERT into test (test) VALUES (?)');
$query->execute(array(rand()));
echo $database->lastInsertId();
test 表有一个自动递增列 id 和一个 varchar 列 test。我正在使用 WAMP 运行 PHP 和 mysql。
对页面的每个请求都会插入两个具有不同值的条目(来自rand() 调用)。仅回显第一个插入 ID。对于 Chrome、Firefox 和 IE,此行为相同。
这是由重写规则引起的:
RewriteEngine on
RewriteRule .* index.php
我假设有一个像 robots.txt 或 favicon.ico 这样的文件是透明请求的。
【问题讨论】:
-
是直接调用 PHP 页面,还是通过 Javascript 或其他方式获取?可能是 javascript 发出了两次请求,而您在某处需要一个
return(false);。 -
直接调用页面,就是索引文件。
-
如果你点击
example.com/somedir可以运行两次,然后指向example.com/somedir/index.php -
我唯一能想到的是一个 apache 配置,它模拟了 @Marc B 所描述的内容,或者进一步深入堆栈的东西。您可以在其上下文中发布更多代码吗?它处理什么样的数据?
-
您有任何可以重定向到 index.php 的重写/错误文档规则吗?可能是页面/浏览器试图加载不同的资源(网站图标等)被重定向到索引?
标签: php wamp duplicate-data