Hallo zusammen,
ich bin mittlerweile ratlos.
Also ich bekomme über eine API ein JSON mit ca. 970 Datensätze, diese gehe ich mittels foreach durch, und prüfe ob der Eintrag schon existiert oder nicht um zu entscheiden ob insert oder update.
mein erstes Problem ist das nur 670 anstatt der 970 Datensätze eingetragen werden?! Ich erhalte keine Fehlermeldung!
Das zweite Problem ist, dass ich in der obrigen Schleife Abfrage ob "Level == 120" dann update Daten von einem anderen JSON Array
Also von den 970 sind etwa 100 auf 120 ...
Das Update läuft wie erwartet sehr lange, aber am Ende werden die echo Anweisungen nicht angezeigt auch wurden die Daten der zweiten Abfrage nicht Ausgeführt bzw. geändert!?
Kann mir jemand ein Paar Tipps geben warum oder wie man solche Updates richtig durchführt?
Mit freundlichen Grüßen Oliver
ich bin mittlerweile ratlos.
Also ich bekomme über eine API ein JSON mit ca. 970 Datensätze, diese gehe ich mittels foreach durch, und prüfe ob der Eintrag schon existiert oder nicht um zu entscheiden ob insert oder update.
PHP-Code:
$json = json_decode( file_get_contents( $url ), true );
...
foreach($json['members'] as $char ){
...
$statement = $pdo->prepare("SELECT COUNT(*) AS anzahl FROM wow_baelgun_guild WHERE cid = ?");
$statement->execute(array($cid));
$row = $statement->fetch();
if($row['anzahl'] > 0 ){
$statement = $pdo->prepare("UPDATE wow_baelgun_guild SET level=:lvl,points=:points,avatar=:avatar,specicon=:specicon,rank=:rank WHERE cid=:cid");
$statement->execute(array('cid' => $cid,'lvl' => $char['character']['level'], 'points' => $char['character']['achievementPoints'], 'avatar' => $char['character']['thumbnail'], 'specicon' => $char['character']['spec']['icon'],'rank' => $char['rank'] ));
}else{
$statement = $pdo->prepare("INSERT INTO wow_baelgun_guild (name,realm,level,avatar,cid,race,class,points,specicon,rank) VALUES (?,?,?,?,?,?,?,?,?,?)");
$statement->execute(array($char['character']['name'],$char['character']['realm'],$char['character']['level'],$char['character']['thumbnail'],$cid,$char['character']['race'],$char['character']['class'],$char['character']['achievementPoints'],$char['character']['spec']['icon'],$char['rank']));
}
....
Das zweite Problem ist, dass ich in der obrigen Schleife Abfrage ob "Level == 120" dann update Daten von einem anderen JSON Array
PHP-Code:
if( $char['character']['level'] == 120 ){
UpdateMember( $cid );
}
PHP-Code:
$pdo = new PDO('mysql:host=localhost;dbname=ojmd_de', 'ojmd_de', 'DLwufBNB');
$statement = $pdo->prepare("SELECT name,realm FROM wow_baelgun_guild WHERE cid = ?");
$statement->execute(array($cid));
$row = $statement->fetch();
....
$json = json_decode( file_get_contents( $url ), true );
if(is_array( $json['items'] ) ){
$statement = $pdo->prepare("UPDATE wow_baelgun_guild SET ilvl = :ilvl,ilvla = :ilvla,herzlvl = :herzlvl,last = :last WHERE cid = :cid");
$statement->execute(array('cid' => $cid, 'ilvl' => $json['items']['averageItemLevel'], 'ilvla' => $json['items']['averageItemLevelEquipped'], 'herzlvl' => $json['items']['neck']['azeriteItem']['azeriteLevel'],'last' => $json['lastModified'] ));
echo "OK| ". $cid."<br/>";
}
Das Update läuft wie erwartet sehr lange, aber am Ende werden die echo Anweisungen nicht angezeigt auch wurden die Daten der zweiten Abfrage nicht Ausgeführt bzw. geändert!?
Kann mir jemand ein Paar Tipps geben warum oder wie man solche Updates richtig durchführt?
Mit freundlichen Grüßen Oliver
Kommentar