我尝试了各种方式,如对象和非对象,以及网络上的多个示例。我知道以前曾经问过这个问题,但由于某些原因,没有什么能解决我的问题。我以前做了大量的INSERTS,之前从未遇到过这个问题。
我只是想记录IP地址和推介网址,以帮助打击adwords欺诈/破坏,但由于某种原因,它被执行了两次。第一次,推荐是空白的,第二次推荐网址本身。
以下是我目前使用的代码:
$db = 'defensalegal';
$table = 'dogbite_tracker';
$ip = $_SERVER['REMOTE_ADDR'];
$referer = $_SERVER['HTTP_REFERER'];
$conn = new mysqli($host, $user, $pass, $db);
$conn->query('INSERT INTO '.$table.' (ID, ip, views, timestamp, referer) VALUES("", "'.$ip.'", "1", "'.date('Y-m-d').' @ '.date('H:i:s').'", "'.$referer.'")');
$conn->close();
我已经验证它不是刷新问题,因为当你直接输入网址的时候也是这样做的,我还擦除了除上述代码片段之外的所有内容的整个文件,以防万一发生某种冲突,仍然有重复的插入。
我也没有收到任何错误。
答案 0 :(得分:0)
快速修复将是
CREATE UNIQUE INDEX index_ip_timestamp_referer ON dogbite_tracker(ip, timestamp, referer);
这是您的问题的快速解决方案,在您的数据库服务器(SQL控制台)上运行此查询
要获得确切的解决方案,您需要发布完整的脚本(代码)。
答案 1 :(得分:-2)
看起来您的脚本可以进行重复插入,如前所述,使脚本应该具有唯一索引 1.检查以前的ip是否已经存在于数据库中 2.如果存在,则更新ip 3.如果ip不存在,则插入new