Insert Into

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo,

    ich versuche gerade aus einem Mehrdimensionalen Array ein INSERT INTO zu bauen.
    Leider schlägt die fehl.

    Quellcode

    1. $scrip_settings = array(
    2. array('sid' => '1','name' => 'enablecalendar','title' => 'Enable Calendar Functionality','description' => 'If you wish to disable the calendar on your board, set this option to no.','optionscode' => 'yesno','value' => '1','disporder' => '1','gid' => '1','isdefault' => '1'),
    3. array('sid' => '2','name' => 'bbcodeinserter','title' => 'Clickable MyCode Editor','description' => 'Set this option to On to show the clickable code buttons editor on posting pages. Switching this off will also disable the Smilies Inserter.','optionscode' => 'onoff','value' => '1','disporder' => '1','gid' => '2','isdefault' => '1'));
    4. $columns = implode(", ",array_keys($scrip_settings));
    5. $escaped_values = array_map('mysql_real_escape_string', array_values($scrip_settings));
    6. $values = implode(", ", $escaped_values);
    7. $sql = "INSERT INTO scrip_settings ($columns) VALUES ($values) ;";
    8. db_query($sql);


    Ich glaube der ganze Ansatz ist Falsch.
    Hat da jemand evtl. eine Lösung?
  • Moin!

    Versuch es einmal mit einer forech() Schleife, indem du durch das $scrip_settings Array iterierst:

    Schaue dir zum besseren Verständnis auch mal folgenden Schnipsel an:

    Quellcode

    1. $scrip_settings = array(
    2. array('sid' => '1','name' => 'enablecalendar','title' => 'Enable Calendar Functionality','description' => 'If you wish to disable the calendar on your board, set this option to no.','optionscode' => 'yesno','value' => '1','disporder' => '1','gid' => '1','isdefault' => '1'),
    3. array('sid' => '2','name' => 'bbcodeinserter','title' => 'Clickable MyCode Editor','description' => 'Set this option to On to show the clickable code buttons editor on posting pages. Switching this off will also disable the Smilies Inserter.','optionscode' => 'onoff','value' => '1','disporder' => '1','gid' => '2','isdefault' => '1')
    4. );
    5. foreach ($scrip_settings as $settings) {
    6. $columns = implode(", ",array_keys($settings));
    7. $values = implode(", ", array_map('mysql_real_escape_string', array_values($settings)) );
    8. $sql = "INSERT INTO scrip_settings ($columns) VALUES ($values) ;";
    9. db_query($sql);
    10. }
    Alles anzeigen


    Was du jetzt noch beachten musst, ist die Tatsache, dass du die Strings, die im Array als Wert enthalten sind, in Anführungszeichen schreiben musst.

    Ich hoffe, ich konte dir weiterhelfen!

    Viele Grüße
    Bodo06
  • Ok, soweit klappt dies aber bei über 20000 Zeilen doch eine Menge Arbeit.

    ich habe es nun mit

    Quellcode

    1. $backupFile = 'daten.sql';
    2. $sql="LOAD DATA LOCAL INFILE '$backupFile' INTO TABLE tabelle ";
    3. $result = db_query($sql);


    versucht aber er meckert

    Table 'tabelle.tabelle' doesn't exist


    Er soll ja keine Datenbank anlegen oder löschen sondern lediglich weitere Datein bzw Tabellen anlegen.
  • Fragz schrieb:

    Ok, soweit klappt dies aber bei über 20000 Zeilen doch eine Menge Arbeit.


    *verschluck* Du willst aber nicht 20.000 Datensätze in deine PHP Datei schreiben, oder?

    Der Befehl, den du da gefunden hast, führt NICHT die darin enthaltenen SQL-Befehle aus, sondern legt die enthaltenen Daten in einer TABELLE an. Kleiner Unterschied. :)
    schau doch mal hier: dev.mysql.com/doc/refman/5.1/de/load-data.html

    Viele Grüße!
    Bodo06
  • Bodo06 schrieb:

    Fragz schrieb:

    Ok, soweit klappt dies aber bei über 20000 Zeilen doch eine Menge Arbeit.


    *verschluck* Du willst aber nicht 20.000 Datensätze in deine PHP Datei schreiben, oder?

    Bodo06


    Doch, zwar nicht direkt alle 20.000 in einer Datei sondern in 4 Abschnitten. Es sind ja auch nicht 20.000 Datensetzen sondern lediglich 20.000 Zeilen

    Edit: Ich denke nun habe ich es. Für alle Tabellen führe ich aus

    Quellcode

    1. CREATE TABLE neue_tabelle SELECT * FROM demo_tabelle

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Fragz ()