Anzeige

 Array Probleme

n1ght

Grünschnabel
#1
Guten Tag liebes tutorials.de Forum,
ich bräuchte ein wenig Hilfe mit einem assoziativen Array. Undzwar müsste ich über eine Foreach-Schleife den Inhalt eines Riesigen Arrays in eine Datenbank eintragen aber iwie krieg ich es nicht auf die Reihe... Finde dafür auch keine erklärung per Google.

PHP:
array(99) { [0]=> array(6) { ["id"]=> string(1) "5" ["elgg_guid"]=> NULL ["admin"]=> string(1) "0" ["name"]=> string(8) "MiguelKl" ["password"]=> string(54) "************" ["mail"]=> string(17) "*********" }
So siehts das Array das durch json_decode($results) aus JSON Werten erstellt wurde. Wie ihr seht 99 assoziative Arrays und ich müsste sie irgendwie trennen finde aber nicht heraus wie. Ich muss die einzelnen Daten in eine SQL Datenbank eintragen am besten über eine Foreach-Schleife erwähnt kriege aber immer nur den Error Array to String Conversion könnt ihr mir da weiterhelfen bitte... :( ****= Zensiert da reale Daten
 

n1ght

Grünschnabel
#3
Den gibts noch nicht ich versuch es erstmal nur so auszugeben das ich es dannach durch den SQL Befehl eintragen kann im Moment habe ich ja nur ein ziemlich langes (99) Array.... Der SQL Befehl ist am Ende dann kein Problem mehr denke ich:D Komme bisher nur bis zu
PHP:
$result = json_decode($json, true);
var_dump($result);
Aktuell gibt es für jeden User ein einzelnes Array und das sind wie erwähnt insgesamt 99Stück(eig mehr aber die müssen umgezogen werden)
Aber ich muss die Arrays ja irgendwie trennen können oder habe ich da einen komplett falschen Ansatz?
 

n1ght

Grünschnabel
#5
Array in Datenbank einfügen ist ja nicht eben möglich... Muss es irgendwie Convertieren so das ich am ende nur noch id = ? name = ? mail = ? habe... Damit dürfte ich dann die Foreachschleife zusammenbekommen

Fehler kommt zustande wenn ich es z.B über implode($result) versuche umzuwandeln..

Soweit bin ich bisher gekommen
PHP:
$result = json_decode($json, true);
$pdo = new PDO('mysql:host=localhost;dbname=mymusic_dev', '***', '*****');
foreach($result as $res) {
    $statement = $pdo->prepare("INSERT INTO members(id,username,email) VALUES(:id, :username, :mail)");
    $statement->execute($res);  
}
 
Zuletzt bearbeitet:

n1ght

Grünschnabel
#6
Habe das JSON Array jetzt mal gekürzt auf die Werte die ich brauche also :id, :name, :mail jetzt kriege ich plötzlich ne Blank-Page :O

PHP:
$result = json_decode($json, true);
$pdo = new PDO('mysql:host=localhost;dbname=mymusic', '****', '****');

foreach($result as $res) {
    $statement = $pdo->prepare("INSERT INTO members(id, username ,email) VALUES(:id, :name, :mail");
    $statement->execute($res);
}
 
#7
Ist das Thema gelöst, oder hast du dich nur verklickt?

Zum Code 1: Natürlich fehlen da noch bindValue's ... und das prepare gehört vor die Schleife.
Das wäre dann alles.
 

n1ght

Grünschnabel
#8
Die bindValue´s brauchts iwie nicht :D hat funktioniert... Auch mit prepared in der Schleife oder ergibt sich daraus ein Sicherheitsrisiko? Bin schon am nächsten Thema jetzt muss ich mir was überlegen um neue Passwörter an die User zu verteilen aber habe da schon ne Idee :)
Also Nein nicht verklickt es hat soweit alles eingetragen wie es sein sollte... Sollte ja soweit auch sicher sein so?
 
#9
BindValue: Sorry, hab den Execute-Parameter übersehen, passt schon.

Prepare in der Schleife: Kein Risiko, aber es verlangsamt die Sache unnötig.

...
Zu den Passwörtern: Häufige Fehler, die vermieden werden sollten:
Passworter einfach so als Text in der DB abspeichern.
Passworter verschlüsselt in der DB abspeichern, und den Schlüssel natürlich auch irgendwo haben damits funktioniert.
Neue Passwörter per Mail versenden.
 
#10
Die sind verschlüsselt ohne Key das ist mein Problem... Des System ist veraltet und muss neu geschrieben werden d.H mitlerweile über sha512.js was ja OpenSource ist früher nur über Boardeigene mittel verschlüsselt... Deswegen hab ich jetzt nen großes Prob:D Wollte es so lösen, das ich sie ohne Passwort eintrage abchecke ob in der Datenbank ein Passwort vergeben ist=> falls nicht kann er direkt eins festlegen (oder er kriegt eins per Mail geschickt was durch zufall erstellt wird.... Wäre auch möglich) => falls doch ganz normaler Login. Sollte doch an sich auch ne gute Lösung sein?
Und dannach, aber erstmal die Passwörter muss ich die Rechte neu vergeben da wir ein komplett neues Rechtesystem eingeführt haben >.< Tolle Sache gell :D manchmal könnt ich kotzen
 
#11
Um den Punkt klarzustellen: SHA512 ist ok, zB. weil es *keine Verschlüsselung* ist, sondern ein Hash (ja das heißt so)

Hashes per JS am Client zu machen sollte auch vermieden werden.
 
#12
PHP:
$random_salt = hash('sha512', uniqid(openssl_random_pseudo_bytes(16), TRUE));
// Erstelle saltet Passwort
  $password = hash('sha512', $password . $random_salt);
So habe ich es gelöst
 
Anzeige

Neue Beiträge

Anzeige