跟踪图像视图时插入双记录


Double records inserted when tracking image views

下面是我跟踪图像视图的代码(tracks.php脚本):

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

当我使用header()函数并输出图像的内容时,记录被复制。我不知道为什么?

请帮帮我。非常感谢。

发生这种情况的原因有很多,如果不运行一些测试并了解更多关于$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。