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

时间:2013-03-08 04:45:31

标签: php mysql zend-framework

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

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

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

请帮帮我。非常感谢你。

1 个答案:

答案 0 :(得分: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 injection不受阻碍。

→然后检查返回的rowCount / mysql_num_rows()。如果返回的数字等于0,则插入$ img_id。否则,请勿插入。