Ergebnis 1 bis 7 von 7

Thema: Database Multiple Insert

  1. #1
    Contao-Nutzer
    Registriert seit
    07.09.2010.
    Beiträge
    40

    Standard Database Multiple Insert

    Hallo,

    ich frage mich gerade, wie man mit der Datenbankabstraktion ein Multiple Insert macht.

    Code:
    INSERT INTO t1(c1) VALUES (1), (2), (3), (4), (5);
    Ein Lsg. wäre eine foreach-Schleife, aber das gefällt mir nicht wirklich:
    PHP-Code:
    foreach($arrData as $data)
    {
        
    $set = array
       (
            
    'firstname'   => $data[0],
            
    'lastname'   => $data[1],
           
        );
       
      
    $this->Database->prepare("INSERT INTO t1 %s")->set($set)->execute();

    Vielleicht hat hier noch jemand eine bessere Lösung.

    Thx

  2. #2
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Das Array musst du natürlich mit der foreach-Schleife aufbauen, aber der ausführende Befehl kommt dann unter die Schleife.
    PHP-Code:
    foreach($arrData as $data)
    {
      
    $set = array
      (
        
    'firstname'   => $data[0],
        
    'lastname'   => $data[1]
      );
    }
    $this->Database->prepare("INSERT INTO t1 %s")->set($set); 
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  3. #3
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    @Andreas dein Code fügt nur den letzten Eintrag hinzu, ist also falsch.

    @eddifuh mit Database_Statement::set lässt sich KEIN Multi Insert realisieren!
    Kann man ganz einfach nachvollziehen: http://www.contao-docs.org/docs/Cont...ce.html#l00557

    Entweder du machst es so, wie du bereits oben geschrieben hast oder du baust dein Statement von Hand zusammen.

  4. #4
    Contao-Nutzer
    Registriert seit
    07.09.2010.
    Beiträge
    40

    Standard

    @tril

    Danke für die Antwort, dass habe ich mir schon fast gedacht.

  5. #5
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ups, sorry, da habe ich mich zu sehr auf diesen Satz verlassen 'Take an associative array'. Ich dachte, ich hätte das schonmal angewendet.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  6. #6
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    @Andreas: das Problem bei Deinem Code ist, daß Du in der Schleife über $arrData die Variable $set immer wieder neu setzt (und damit den zuvor gesetzten überschreibst).

    Grüße,
    Andreas
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  7. #7
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ach, da gab es bei mir ein Verständnisproblem. Das Array habe ich mir gar nicht angesehen, nur copy and paste. Aber set() ist nur dafür da um mehrere Werte in einem Datensatz zu ändern/einzufügen. Will man mehrere Datensätze ändern/einfügen, dann ist das von eddifuh schon das richtige. Oder man baut es sich selbst zusammen http://www.php.net/manual/de/mysqli.multi-query.php. Eine multi_query-Methode ist in Contao noch nicht vorhanden.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •