2013-03-08 73 views
0

這裏是我的跟蹤圖像視圖(tracks.php腳本)代碼:雙記錄查看

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

當我使用header()功能和輸出圖像的內容,記錄被複制。 我不知道爲什麼?

請幫我一把。非常感謝。

回答

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。否則,不要插入它。

+0

感謝您的回覆。 $ db對象是從Zend_DB類擴展而來的。當我刪除header()函數並且不輸出圖像的內容時,該記錄被正確插入。 – 2013-03-08 05:04:17

+0

如果在header()調用下面放置$ _GET和$ db-> insert,會發生什麼? – 2013-03-08 05:11:26

+0

我嘗試過,但它仍然重複插入的記錄。 – 2013-03-08 05:19:39