Array in DB schreiben

  • PHP

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von GCAsk.

    Array in DB schreiben

    Guten Tag,

    irgendwie komme ich gerade hier mit dem Array nicht klar.

    Beim Parsen der Tabelle erstelle ich ein Array mittels array_push.
    print_r($variable) zeigt mir auch das Array ordnungsgemäß an. Ich kriege dieses Array jetzt allerdings nicht in die MySQL-Datenbank geschrieben.
    Hab schon versucht, das mittels einer foreach schleife zu machen und dann implode zu nutzen, aber ohne Erfolg.

    Vielleicht kann mir jemand helfen und sagen, wie ich das folgende Array in die DB geschrieben bekomme.

    PHP-Quellcode

    1. $table = [];
    2. foreach($html->find('tr') as $element){
    3. $var1= $element->children(0)->outertext ;
    4. $var2= $element->children(1)->outertext ;
    5. $var3= $element->children(3)->outertext ;
    6. $var4= $element->children(5)->outertext ;
    7. array_push($table,[
    8. 'Var1' => $var1,
    9. 'Var2' => $var2,
    10. 'Var3' => $var3,
    11. 'Var4' => $var4,
    12. ]);
    13. }


    Hier der Versuch zur Lösung ^^

    PHP-Quellcode

    1. $sql = "INSERT INTO Tabelle(Var1, Var2, Var3, Var4) VALUES ";
    2. $valuesArr = array();
    3. foreach($table as $row){
    4. $var1SQL = $row['Var1'];
    5. $var2SQL = $row['Var2'];
    6. $var3SQL = $row['Var3'];
    7. $var4SQL = $row['Var4'];
    8. $valuesArr[] = "('$var1SQL', '$var2SQL', '$var3SQL', '$var4SQL')";
    9. }
    10. $sql .= implode(',', $valuesArr);
    11. mysqli_query($conn, $sql);


    Habe die Lösung mir aus ein paar Tutorials zusammengekratzt, ich entschuldige mich schon einmal dafür, dass es falsch ist ^^

    Danke im Voraus, muss also das Array $table in die DB einfügen (reihe für reihe).
    Möchte dir ungerne nehmen, selbst herauszufinden was das Problem ist.
    Daher guck dir doch einmal das hier an: mysqli_error

    Falls es nicht am MySQL liegt und der fehler im PHP-Skript ist und die Ausgabe von Fehlermeldungen deaktiviert ist,
    guck dir mal das hier an: error_reporting


    Falls es immer noch nicht geht, wäre es gut wenn du die MySQ-Fehlermeldung bzw. die PHP-Fehlermeldung hier posten würdest.
    Das kann es jetzt echt nicht sein -.- Warum kann das Leben so schwer sein ^^

    Hatte vorher schon mysqli_error drin, aber nicht verstanden warum es nicht ging, musste die Variable noch übersenden, hab das vergessen. Vor lauter Programmieren habe ich das wohl übersehen.
    Jedenfalls hat der Datenbank Name beim Connectionstring gefehlt, deswegen hat er es nicht eingetragen.

    Facepalm.

    Sorry.

    Sehe aber gerade, dass zwar alles eingetragen wurde, allerdings mit HTML Codes.
    Kann ich die irgendwie entfernen? Spontan fiel mir preg replace ein? An welcher Variable müsste ich das machen?
    Schon bei der ersten Foreach Schleife?
    Super, mal wieder vielen Dank @Anluin

    In Verbindung mit str_replace konnte ich dann auch Komma mit Punkt jeweils ersetzen.

    Das EInzige, was ich jetzt noch herausfinden muss, ist, INSERT INTO IF NOT EXISTS.

    Soll also nur eintragen, wenn der entsprechende Datensatz noch nicht in der DB steht.
    Hm, schon mal Tipps?
    INSERT INTO (value,..) SELECT FROM .. IF NOT EXISTS ?
    So in etwa?
    Ich habe das Problem immer mit PHP gelöst.

    PHP-Quellcode

    1. $result = $mysqli->query("SELECT .... LIMIT 1");
    2. if ($result->num_rows == 0) {
    3. $result = $mysqli->query("INSERT INTO...");
    4. }

    Falls du lieber eine schönere Lösung habe möchtest, kannst du ja mal nach "INSERT IGNORE" suchen.
    Guck dir mal das hier an.