2017-02-03 17 views
0

私は、オブジェクトや非オブジェクト、Web上の複数の例など、さまざまな方法を試しました。私はこれが以前に尋ねられたことを知っていますが、何らかの理由で何も私の問題を解決していません。私は過去にたくさんのINSERTをやったことがありますし、これまでにこの問題に遭遇したことはありません。php/MySQL INSERTを2回実行する

アドワーズ広告詐欺/妨害との闘いに役立つように、IPアドレスと紹介URLを記録したいだけですが、何らかの理由で2回実行されています。初めての参照は空白で、2回目の参照URLはそれ自体です。私が確認した

$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(); 

それはあなたが直接だけでなく、URLを入力するとき、それはそれをしないので、リフレッシュの問題ではない、と私はまた、全体を拭い:ここ

は、私が使用している現在のコードです上記のコードスニペットを除いてすべてのファイルが存在します。何らかの矛盾が発生しても、重複した挿入が残っています。

いずれもエラーは発生していません。

+1

あなたのスクリプトがおそらく2回実行されているように見えます。スクリプトの上部にログを記録して、ログが2回表示されるのを見ましたか?迅速な修正のための – AmericanUmlaut

+0

は、ip、timestamp、refererでユニークなインデックスを作成します。 SQLサーバー上で1つのコマンドを実行するだけで済みます。 – webDev

+0

[debug_print_backtrace()](http://php.net/manual/en/function.debug-print-backtrace.php)のようなものを試してみてください。 –

答えて

0

クイックフィックスは、厳密解のために、あなたのDBサーバー(SQLコンソール)

にこのクエリを実行し、これがあなたの問題の迅速な解決策である

CREATE UNIQUE INDEX index_ip_timestamp_referer ON dogbite_tracker(ip, timestamp, referer); 

だろう、あなたはあなたの完全なスクリプトを投稿する必要があります(コード)。

+0

これは何も良いことも悪いこともしていません – stinkysGTI

+0

独自のインデックスがDBで定義されていることを確認しましたか?最初に参照してください。あなたのテーブルの列に基づいてユニークなフィールドを作成するための構文をチェックしてください。私はこれと同様の問題を抱えていたので、これはうまくいくはずです.... mysqlの複数の列を持つユニークなインデックスの作成を参照してください – webDev

-2

ユニークインデックスはスクリプトが
1.確認データベース
2. Updateですでに以前のIP場合は、IPの場合は
3.挿入が存在する必要があります作るために、前に述べたように、あなたのスクリプトは、重複した挿入を行うことなんとかですように見えます新しいIPが存在しない場合

関連する問題