Ich habe eine Anwendung, die mit einer inoffiziellen Overwatch-API verbinden und Informationen dieses Spielers abrufen und in meiner Datenbank speichern wird. Ich gehe durch, wie ich die Informationen bekomme, nur um sicherzustellen, dass es kein Problem woanders ist.PHP - undefined Index in Params-Array
beginne ich mit wie so innerhalb einer Anordnung jeden der Helden mit:
$heroArray = array(
"zenyatta" => "0",
"mei" => "0",
"tracer" => "0",
"soldier76" => "0",
"anaamari" => "0",
"roadhog" => "0",
"reinhardt" => "0",
"torbjorn" => "0",
"mccree" => "0",
"junkrat" => "0",
"dva" => "0",
"winston" => "0",
"hanzo" => "0",
"widowmaker" => "0",
"reaper" => "0", //this hero is causing problems later
"pharah" => "0", //this hero is causing problems later
"symmetra" => "0", //this hero is causing problems later
"genji" => "0",
"lucio" => "0",
"bastion" => "0",
"mercy" => "0",
"zarya" => "0",
"sombra" => "0"
);
Die Werte auf Null, wenn die Werte eingestellt werden gefüllt wird, um die Anzahl von Stunden sein, die Spieler mit diesem Helden gespielt . Dann werden die Helden durchgeschleift, um die Informationen aus der JSON-Datei zu erhalten, die die API zurückgegeben hat.
Das Array und andere Werte werden dann an die alterPlayer-Funktion übergeben. Der SQL-Code lautet wie folgt:
$sqlQuery= "UPDATE player SET timeplayed = :timeplayed, prestige = :prestige , level = :level, avatar = :avatar, wins = :wins, Zenyatta = :zenyatta, Mei = :mei, Tracer = :tracer, Soldier76 = :soldier76, Anaamari = :anaamari, Roadhog = :roadhog, Reinhardt = :reinhardt, Torbjorn = :torbjorn, Mccree = :mccree, Junkrat = :junkrat, Dva = :dva, Winston = :winston, Hanzo = :hanzo, Widowmaker = :widowmaker, Reaper = :reaper, Pharah = :pharah, Symmetra = :symmetra, Genji = :genji, Lucio = :lucio, Bastion = :bastion, Mercy = :mercy, Zarya = :zarya, Sombra = :sombra, TopHero :heroTopName, SecondHero = :heroSecondName, ThirdHero = :heroThirdName, TopHeroElim = :heroTopElim, TopHeroDeath = :heroTopDeath, SecondHeroElim = :heroSecondElim, SecondHeroDeath = :heroSecondDeath, ThirdHeroElim = :heroThirdElim, ThirdHeroDeath = :heroThirdDeath WHERE Battletag = :battletag";
Und dann werden die Werte in der params Array zugewiesen (ich habe einige der Werte entfernt, um Platz zu sparen hier):
$params = array(
"junkrat" => $heroArray['junkrat'],
"dva" => $heroArray['dva'],
"winston" => $heroArray['winston'],
"hanzo" => $heroArray['hanzo'],
"widowmaker" => $heroArray['widowmaker'],
"reaper" => $heroArray['reaper'], //problem
"pharah" => $heroArray['pharah'], //problem
"symmetra" => $heroArray['symmetra'], //problem
"genji" => $heroArray['genji'],
"lucio" => $heroArray['lucio'],
"bastion" => $heroArray['bastion'],
"mercy" => $heroArray['mercy']
);
Als ich das laufen in Kommandozeile Ich erhalte folgenden Fehler:
C:\Windows\system32>C:/xampp\php\php.exe C:\xampp\htdocs\overwatch\alterPlayer.php
NULL
Notice: Undefined index: reaper in C:\xampp\htdocs\overwatch\PlayerTableGateway.php on line 123
Notice: Undefined index: pharah in C:\xampp\htdocs\overwatch\PlayerTableGateway.php on line 124
Notice: Undefined index: symmetra in C:\xampp\htdocs\overwatch\PlayerTableGateway.php on line 125
Could not update player
Also die Helden, die Probleme verursachen, sind Reaper, Pharah und Symmetra. Wenn jemand den Fehler entdecken kann, würde es sehr geschätzt werden !!
Ihre Datenbank ist durcheinander. Was ist, wenn sie dem Spiel einen neuen Helden hinzufügen? Sie müssen eine zusätzliche Spalte erstellen. Etwas tun. – Phiter
Dies ist ein akademisches Projekt, wenn die Überspielung weitere Helden hinzufügen möchte, werde ich sie nicht zu meiner Anwendung hinzufügen. – Marzipan
Ich sehe. Aber auch in kleineren Projekten ist es gut, die besten Ansätze zu verwenden, nur damit man sich daran gewöhnt. – Phiter