1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Array Probleme

Dieses Thema im Forum "PHP" wurde erstellt von n1ght, 5. Oktober 2016.

  1. n1ght

    n1ght Grünschnabel

    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.

    Code (PHP):
    1. 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
     
  2. sheel

    sheel I love Asm Administrator

    Hi

    Da wäre dein DB-Einfüge-Code auch hilfreich.
    Die foreach-Schleife ist jedenfalls nicht für den Fehler verantwortlich.
     
  3. n1ght

    n1ght Grünschnabel

    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
    Code (PHP):
    1. $result = json_decode($json, true);
    2. 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?
     
  4. sheel

    sheel I love Asm Administrator

    Naja, und wo kommt der Fehler dann her?

    Fürs Einfügen, zu Mysqli und PDO gibt es mehr als genug Beispiele im Internet...
     
  5. n1ght

    n1ght Grünschnabel

    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
    Code (PHP):
    1. $result = json_decode($json, true);
    2. $pdo = new PDO('mysql:host=localhost;dbname=mymusic_dev', '***', '*****');
    3. foreach($result as $res) {
    4.     $statement = $pdo->prepare("INSERT INTO members(id,username,email) VALUES(:id, :username, :mail)");
    5.     $statement->execute($res);  
    6. }
     
    Zuletzt bearbeitet: 5. Oktober 2016
  6. n1ght

    n1ght Grünschnabel

    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

    Code (PHP):
    1. $result = json_decode($json, true);
    2. $pdo = new PDO('mysql:host=localhost;dbname=mymusic', '****', '****');
    3.  
    4. foreach($result as $res) {
    5.     $statement = $pdo->prepare("INSERT INTO members(id, username ,email) VALUES(:id, :name, :mail");
    6.     $statement->execute($res);
    7. }
     
  7. sheel

    sheel I love Asm Administrator

    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.
     
  8. n1ght

    n1ght Grünschnabel

    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. sheel

    sheel I love Asm Administrator

    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. n1ght

    n1ght Grünschnabel

    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. sheel

    sheel I love Asm Administrator

    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. n1ght

    n1ght Grünschnabel

    Code (PHP):
    1. $random_salt = hash('sha512', uniqid(openssl_random_pseudo_bytes(16), TRUE));
    2. // Erstelle saltet Passwort
    3.   $password = hash('sha512', $password . $random_salt);
    So habe ich es gelöst
     
Die Seite wird geladen...