mysql查询插入3个重复记录

时间:2013-04-17 16:41:47

标签: php mysql

我使用以下代码将命中记录到视图表中,但是当我加载此页面时,MySQL查询一次插入3行,因此1次命中意味着3次点击。我想弄明白,但不能运气。

    $width = 16;
    $height = 16;

    $id = 30

    $ip = $_SERVER['REMOTE_ADDR'];
    $user_agent = $_SERVER['HTTP_USER_AGENT'];


    //count views

    global $db;


    $sql = 'INSERT INTO '.DB_PREFIX.'views (invoice_id, ip, user_agent) 
                                               VALUES ("' . $id . '",
                                                "' . ip2long($ip) . '",
                                                "' . $user_agent . '")';

$db->query($sql);

//display image
header( "Content-type: image/png" );
$img = imagecreate($width, $height);
$background_color = imagecolorallocate($img, 238, 238, 238);
imagepng($img);
imagedestroy($img);

如果我用简单的echo "Successfully done!"替换显示图像代码,问题就解决了,它只插入一行。

mysql行

id     invoice_id    ip         user_agent    dnt
35     22           2058457116     Mozilla/5.0   2013-04-17 11:55:12
34     22           2058457116     Mozilla/5.0   2013-04-17 11:55:12
33     22           2058457116     Mozilla/5.0   2013-04-17 11:55:11

3 个答案:

答案 0 :(得分:0)

脚本无法插入三行。

所以唯一的可能是脚本运行了三次。

我建议您检查Web服务器日志以获取对URL的访问。

答案 1 :(得分:0)

您使用的是模板引擎还是某种类似的CMS?例如,我之前尝试过Drupal,并且由于系统的钩子功能,文件可能被多次调用..与模板引擎相同。这可能是问题所在。此外,由于与“已发送的标头”相关联的错误情况,回显某些内容可能会阻止其他脚本运行。这就是为什么即使你最后做了die(),它仍然无效。

答案 2 :(得分:0)

请告诉您用于测试的操作系统和浏览器。 我在IOS设备中尝试使用safari时遇到了类似的问题。 我的代码是用于下载音频。对于所有操作系统,它工作正常。但对于IOS设备中的safari,下载代码被多次执行。 请在其他浏览器上查看此信息并告知我们结果。