0

每次在我的网站上显示广告时,我都会尝试增加 +1 印象,但是变量会任意增加 +2 到 +3。我已经删除了所有正常工作的内容,并创建了一个页面,其中仅包含以下代码:

<?php
require "connect_to_mydb.php";
echo 'Hello***** '.$testVariable=$testVariable+1;
mysql_query("UPDATE `imageAds` SET `test`=`test`+1 WHERE `id`='1'");
?>

每次刷新页面时,test任意增加 +2 或 +3 并显示我的页面Hello***** 1(只是为了显示它没有循环)。访问仅限于此页面,因此不是其他用户刷新该页面。

此外,id并且testint(11)数据库中。

我的数据库所需的连接中没有任何会干扰的东西。

编辑

这是一个更新的代码:

<?php
require "connect_to_mydb.php";
mysql_query("UPDATE `imageAds` SET `test`=`test`+1 WHERE `id`='1'");
$sql = mysql_query("SELECT * FROM imageAds WHERE id='1' LIMIT 1");
$check = mysql_num_rows($sql);
if($check > 0){ 
    $row = mysql_fetch_array($sql);
    echo $row['test'];
}
?>

每次增加 +2

编辑 这是 connect_to_mydb.php 中的内容

<?php  
$db_host = "*************************"; 

$db_username = "*********";  

$db_pass = "**********";  

$db_name = "**************";

mysql_connect("$db_host","$db_username","$db_pass") or die ("could not connect to   mysql");
mysql_select_db("$db_name") or die ("no database");              
?>
4

2 回答 2

3

要么在 MySQL 的 UPDATE 实现中存在错误,要么你在一些你没有发布的代码中做错了。

提示:这不太可能是 MySQL 中的错误。其他人会注意到它。


从您显示的内容来看,您的页面似乎被多次加载。

这种试图证明代码只被调用一次的尝试并不能证明任何事情:

echo 'Hello***** '.$testVariable=$testVariable+1;

Hello***** 1即使您多次打开此页面,这也将始终打印相同的内容 ( ),因为$testVariable在单独的请求中不会保留 的值。

于 2012-04-29T20:32:45.517 回答
0

这个 +2/+3 错误只发生在 Chrome 和我的移动 Android 浏览器上,并且代码是可靠的。我查看了 Chrome 发送多个 http 请求 (thx user1058351) 是否存在任何问题,此处记录了以下内容:

http://code.google.com/p/chromium/issues/detail?id=39402

因此,由于这种方式不可靠,我刚刚完成了一项可靠的工作。我现在没有包含在重新加载时更新广告展示量的 PHP 文件,而是在页面加载时将 AJAX 请求发送到单独的 PHP 文件,该文件更新广告统计信息并返回适当的数据。我认为关键是通过 JS 代码发送它,因此只能发送一个 http 请求来增加数据。

感谢所有回复的人,特别是 user1058351 和 Mark Byers(不是 MYSQL 中的错误,但可能似乎是 Chrome 中的错误)。

于 2012-04-30T05:17:28.007 回答