Я пишу скрипт PHP, который работает на cron и извлекает данные JSON из API [название (текст), путь (текст), посетителей (целое число)] и сохраняет его в базе данных 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. –