0

画像ビューを追跡するための私のコード (tracks.php スクリプト) は次のとおりです。

$img_id = $_GET['img_id'];
$db->insert(TRACKS, $img_id);
header('Content-Type: image/jpeg');
//then output img's content

関数を使用しheader()て画像の内容を出力すると、レコードが重複します。どうしてか分かりません?

私を助けてください。どうもありがとう。

4

1 に答える 1

0

これが発生する理由はいくつかあります。いくつかのテストを実行し、$db オブジェクトについて詳しく知らなければ、追跡するのに苦労するでしょう。

→ この問題の簡単な解決策は、$img_id を挿入する前にデータベースに存在しないことを確認することです。

Zend DBの $db オブジェクトを使用して、最初に img_id を確認すると、次のようになります。

$select = $db->select();
$select->from( 'table_name', '*' );
$select->where( 'img_id = ?', $img_id );

$rows = $db->fetchAll( $select );

if( count( $rows[0] ) == 0 ) { $db->insert( TRACKS, $img_id ); }

最初に $img_id をサニタイズして、SQLインジェクション回避してください。

→ 次に、rowCount / mysql_num_rows()が返されたことを確認します。返された数値が 0 の場合は、$img_id を挿入します。それ以外の場合は、挿入しないでください。

于 2013-03-08T04:55:53.123 に答える