我正在編寫一個PHP腳本,該腳本在cron上運行並從API [標題(文本),路徑(文本),訪問者(整數)]中提取JSON數據並將其存儲在SQLite數據庫中。每次運行時,如果它看到一個現有的標題,它應該將新的訪問者數量添加到現有的訪問者。如果不是,則應該將新數據添加爲新行。使用SQLite合併和添加數據
這裏是我的環路的簡化一下:
foreach($results as $printresults) {
//this iterates though $title, $path and $visitors
$existing_visitors = $db->query("SELECT SUM(visitors) FROM topten WHERE
title='$title'");
while ($existing_vis_row = $existing_visitors->fetch(SQLITE_NUM)) {
$dupe_enter = $db->query("UPDATE topten SET title='$title', path='$path',
visitors='$existing_vis_row[0]' WHERE title='$title' ");
}
$db->query("INSERT INTO topten (id,title,path,visitors,time) VALUES
(NULL, '$title', '$path', '$visitors', '$time');");
}
然後,我會做一個SELECT
遊客拉下令DISTINCT
行,寫這一個文件。由於UPDATE
查詢將所有訪問者添加到這些行,因此將無所不能。在某個超時時間,我將放棄整個表格並重新開始收集,所以文件不會太笨重。
問題在於,它會在循環的每一個循環中添加總計訪問者數量,使訪問者完全無法應對。但是我無法找到一種更好的方式來在每次腳本運行時簡單地將數據添加到一起。
你可以把它貶低一點嗎?我對SQL不太好。也刪除了JSON的提及。 – 2009-06-04 21:01:51