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(ループしていないことを示すためだけに)。アクセスはこのページに制限されているため、他のユーザーがページを更新することはありません。

また、DB に存在しidますtestint(11)

私のDBに必要な接続には、干渉するものは何もありません。

編集

更新されたコードは次のとおりです。

<?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 のバグである可能性はほとんどありません他の人はそれに気づいたでしょう。


ご覧のとおり、ページが複数回読み込まれているようです。

コードが 1 回だけ呼び出されていることを証明しようとするこの試みは、何も証明しません。

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 ファイルに送信され、広告の統計情報が更新され、適切なデータが返されます。私が考える重要な点は、データをインクリメントするために 1 つの http リクエストのみを送信できるように、JS コードを介して送信することです。

特に user1058351 と Mark Byers (MYSQL のバグではなく、Chrome のバグの可能性があります) に回答してくれたすべての人に感謝します。

于 2012-04-30T05:17:28.007 に答える