Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] mehrfaches INSERT über PHP

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] mehrfaches INSERT über PHP

    Hallo,

    ich habe da ein ganz spezielles Problem ... ich möchte einen mehrfachen INSERT in einer MySQL Db durchführen und das in einem Rutsch.

    Über PHPMyAdmin kann ich in dem Reiter "SQL" einen solchen INSERT machen. Wie mache ich das aber mit PHP?

    Hintergrund ist, dass Daten aus einer Exceltabelle als SQL-String zusammengebaut wird und dann durch einen User, der so gut wie keine Erfahrung mit der Materie hat, über ein Eingabeformular die Werte in einer DB speichern kann.

    Folgender SQL-String wäre dabei z.B. zu verwenden:

    PHP-Code:
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('00','1','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('01','2','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('02','5','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('03','7','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('04','9','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('05','4','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('06','6','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('07','4','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('08','8','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('09','9','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('10','3','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('11','5','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('12','7','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('13','2','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('14','3','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('15','3','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('16','3','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('17','7','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('18','9','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('19','6','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('20','8','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('21','4','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('22','4','04.08.2010','606013');
    INSERT INTO einsatzzahlen (uhrzeit,wert,datum,oevalues ('23','4','04.08.2010','606013'); 
    Hat jemand eine Idee, wie man das realisieren kann?

    Vielen Dank schon mal


  • #2
    Mit einer Schleife?
    ACHTUNG!!! SIGNATUR!!!
    PHP-Code:
    var_dump($gehirn); exit; 
    0 ??? WTF ? nervtag.de | freutag.net | friendmetr.com

    Kommentar


    • #3
      Hier for-schleife: Seite 1

      eigentlich ganz simple

      Kommentar


      • #4
        Werte in ein Array schreiben (dabei ist es irrelevant wo die Werte herkommen) und dann dieses Array über eine foreach oder for Schleife auswerten und in der Schleife dein Insert einsetzen.

        Dann wird bei jedem Schleifendurchlauf ein Insert mit bei jedem Schleifen durchlauf auftretenden Werten ausgeführt.
        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
        http://www.lit-web.de

        Kommentar


        • #5
          Zitat von MaiKaY Beitrag anzeigen
          Mit einer Schleife?
          ... möglicher Ansatz?

          Der Text soll über ein Inputfeld oder ein Textareafeld in die Form gebracht werden ...

          Kommentar


          • #6
            ... was muss ich da wo hinschreiben ...???

            Ich habe das so verstanden, dass die Werte und nur die Werte dann in das Inputfeld müssen ... innerhalb einer Schleife werden diese Werte dann ausgelesen und dann in die DB geschrieben???

            Kommentar


            • #7
              Geschickter ist es einen multiple Insert zu senden
              Code:
              INSERT INTO table (spalte, spalte2, spalte3) VALUES ('asd', 'asd', 3434), ('asd', 'asd', 2222), ...
              Ich hab da mal vorbereitet...
              PHP-Code:
              $data = array(
                          array(
              'val''val''val'),
                          array(
              'value''value''value')
                      );
                      
              $insert 'INSERT INTO `tablename` (spalte1, spalte2, spalte3) VALUES ';

              $dataString '';
              foreach (
              $data as $v) {
                  
              $dataString .= '("' implode('", "'$v) . '"), ';
              }
              $insert .= rtrim($dataString', '); 
              Erzeugt eine Ausgabe in der Art:
              Code:
              INSERT INTO `tablename` (spalte1, spalte2, spalte3) VALUES ("val", "val", "val"), ("value", "value", "value")
              Eventuell müsstest du noch auf stripshlashes oder ähnliches zurückgreifen. Und wenn die Daten aus einem Formular kommen, dann zusätzlich noch validieren!
              "My software never has bugs, it just develops random features."
              "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

              Kommentar


              • #8
                Zitat von Paul.Schramenko Beitrag anzeigen
                Geschickter ist es einen multiple Insert zu senden
                Code:
                INSERT INTO table (spalte, spalte2, spalte3) VALUES ('asd', 'asd', 3434), ('asd', 'asd', 2222), ...
                Ich hab da mal vorbereitet...
                PHP-Code:
                $data = array(
                            array(
                'val''val''val'),
                            array(
                'value''value''value')
                        );
                        
                $insert 'INSERT INTO `tablename` (spalte1, spalte2, spalte3) VALUES ';

                $dataString '';
                foreach (
                $data as $v) {
                    
                $dataString .= '("' implode('", "'$v) . '"), ';
                }
                $insert .= rtrim($dataString', '); 
                Erzeugt eine Ausgabe in der Art:
                Code:
                INSERT INTO `tablename` (spalte1, spalte2, spalte3) VALUES ("val", "val", "val"), ("value", "value", "value")
                Eventuell müsstest du noch auf stripshlashes oder ähnliches zurückgreifen. Und wenn die Daten aus einem Formular kommen, dann zusätzlich noch validieren!
                ... ich könnte diese Eingabe doch auch mit Excel vorbereiten, so dass die Eingabe so aussieht:

                [/php]Erzeugt eine Ausgabe in der Art:
                Code:
                INSERT INTO `tablename` (spalte1, spalte2, spalte3) VALUES ("val", "val", "val"), ("value", "value", "value")
                Werde es mal ausprobieren ....

                Auf jeden Fall Dir vielen Dank für den Ansatz

                Kommentar


                • #9
                  Eigentlich ist da mehr als nur ein Ansatz.
                  "My software never has bugs, it just develops random features."
                  "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                  Kommentar


                  • #10
                    Zitat von Paul.Schramenko Beitrag anzeigen
                    Eigentlich ist da mehr als nur ein Ansatz.
                    Das stimmt ... eigentlich eine komplette Lösung ... ich sehe, ich habe mich da falsch ausgedrückt ...

                    Kommentar


                    • #11
                      Ist ja net schlimm.
                      Zum Thema:
                      Wenn die Daten aus excel kommen, könntest du diese beispielsweise als CSV exportieren lassen und dann sowas in der Art machen:
                      PHP-Code:
                      $data explode(';'$csvDataArray); 
                      Und der Rest der Verarbeitung läuft dann wie oben gepostet.
                      "My software never has bugs, it just develops random features."
                      "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                      Kommentar

                      Lädt...
                      X