Проверка JSON - удаление и добавление в БД

502
26 ноября 2016, 20:24

Нужна помощь с JSON и его взаимодействием с БД. Имеется к примеру такой JSON.

{
    "response": {
        "trade_offers_received": [
            {
                "tradeofferid": "1537239550",
                "accountid_other": 169029426
            },
            {
                "tradeofferid": "1537239438",
                "accountid_other": 169029426
            },
            {
                "tradeofferid": "1537239334",
                "accountid_other": 169029426
            },
            {
                "tradeofferid": "1537236218",
                "accountid_other": 169029426
            }
        ]
    }
} 

Задача в том, что нужно парсить его в реальном времени, добавляя в базу по одному элементу с каждым обновлением страницы, пока не добавятся все элементы ("tradeofferid"), это проблема решена, но с трудом, а главная проблема сейчас в том, что не получается удалять те элементы из БД, которых уже нет в JSON, помогите правильно составить нужный вариант, мой код ниже:

    $tradesinfo = json_decode(file_get_contents('http://api.steampowered.com/IEconService/GetTradeOffers/v1/?key='.$userinfo['keyuser'].'&get_received_offers=1&active_only=1'),true);
    $tradescount = count($tradesinfo['response']['trade_offers_received']);
    $stmtone = $pdo->prepare('SELECT * FROM trades');
    $stmtone->execute();
    $tradesinfo = $tradesinfo['response']['trade_offers_received'];
   //Тут все очень костыльно, работает не так, как хотелось бы 
    $tradeinfo = $tradesinfo[$stmtone->rowCount()];
    $steamids = reloads('[U:1:'.$tradeinfo['accountid_other'].']');
    $userofferinfo = json_decode(file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key='.$usersinfo['keyuser'].'&steamids='.$steamids),true);
    $userinfo = $userofferinfo['response']['players'][0];
    // Попытка удалять из БД, а удаляет все строки
     while($rowone = $stmtone->fetch(PDO::FETCH_ASSOC)){
        $arrs = in_array($rowone['tradeid'],$tradesinfo);
        if($arrs != $rowone['tradeid']){
    $stmt = $pdo->prepare('DELETE FROM trades WHERE tradeid = :tradeid');
    $stmt->execute(Array('tradeid'=>$rowone['tradeid']));
        }
    } 
    $stmt = $pdo->prepare('SELECT * FROM trades WHERE tradeid = :tradeid');
    $stmt->execute(Array('tradeid' => $tradeinfo['tradeofferid']));
    if($stmt->rowCount() == 0){
    $stmt = $pdo->prepare('INSERT INTO trades (tradeid,mysteamid,steamid,user,avatar,country,message) VALUES (:tradeid,:mysteamid,:steamid,:user,:avatar,:country,:message)');
    $stmt->execute(Array('tradeid' => $tradeinfo['tradeofferid'],'mysteamid' => $steamid,'steamid' => $steamids,'user' => $userinfo['personaname'],'avatar' => $userinfo['avatarmedium'],'country' => $userinfo['loccountrycode'],'message' => $tradeinfo['message']));
    }
READ ALSO
Почему MyISAM медленне MyISAM?

Почему MyISAM медленне MyISAM?

Один и тот же запрос в таблицу с 3млн строк

333
Как использовать mysql в django?

Как использовать mysql в django?

Использую django с python3При pip install mysql-python выдает ошибку: Command "python setup

463