Ankündigung

Einklappen
Keine Ankündigung bisher.

INSERT aus mehreren Quellen

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

  • INSERT aus mehreren Quellen

    Hallo Forum,

    Ich möchte in einer Schleife eine Tabelle (ewran) befüllen mit 4 Spalten (ID, NICK, ZELLE, DATUM)

    Die Felder ID und Nick kommen aus einer anderen Tabelle (tblmember)

    Der Wert für das Feld ZELLE exisitiert in einem Array, das Datum soll das aktuelle Datum sein (NOW())

    In dieser Schleife soll das ganze stattfinden. $key ist der Wert für das Feld ZELLE, und $_POST['Auswahl'][$key] ist die ID von dem Datensatz aus der Tabelle tblmember.

    PHP-Code:
    foreach(array_keys($_POST['Auswahl']) as $key)
     {
       
    $SQL "INSERT INTO ewran (ID,NICK,ZELLE,DATUM)
                     SELECT tblmember.ID, tblmember.NICK FROM tblmember WHERE tblmember.ID='"
    .$_POST['Auswahl'][$key]."'


    Ich hab jetzt schon gefühlte 50 Versuche gestartet, aber ich bekomme es nicht hin, die Werte für ZELLE und DATUM einzufügen.

    Wäre super nett, wenn mir jemand auf die Sprünge helfen würde

    LG Micha


  • #2
    Du versuchst 2 Werte in 4 Spalten zu schreiben ...

    Kommentar


    • #3
      Deine SQL-Query ist anfällig für SQL-Injections!
      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        @Dormilich
        Nein, ich versuche 4 Werte in 4 Spalten zu schreiben, der Code da oben ist das, was bisher funktioniert wenn ich nur die beiden Spalten ID und NICK beschreibe. Die beiden anderen Spalten, das ist mein Problem.
        Und mir gehts grad auch nicht um SQL injection sondern um das reine SQL Statement,....

        Kommentar


        • #5
          Ein zeilenweises Insert ist sehr langsam, und du hast da sogar noch ein subselect drin.

          Welche Datenbank nutzt du und über welche Größenordnung der einzufügenden Zeilen reden wir hier?

          Die folgenden Tipps beziehen sich auf MySQL.
          Bau dir ein Array mit allen Werten zusammen, das du zeilenweise einfügen kannst wenn es nur wenige Werte sind oder du arbeitest mit einem Multi-Insert .
          Sollten es viele Werte sein, so das du mit dem Speicher Probleme bekommst, lege die Daten in einer Datei ab und arbeite mit LOAD DATA INFILE .
          PHP-Klassen auf github

          Kommentar


          • #6
            Danke, habe ich mir schon gedacht, ich nutze MYSQL und die Daten sind < 100, ich werde das dann über ein Array realisieren.

            Kommentar


            • #7
              Du musst die Werte ins SELECT einfügen.

              PHP-Code:
                 $SQL "INSERT INTO ewran (ID,NICK,ZELLE,DATUM)
                               SELECT tblmember.ID, tblmember.NICK, "
              .$pdo->quote($key).", ".$pdo->quote(...)." FROM tblmember WHERE tblmember.ID=".$pdo->quote($_POST['Auswahl'][$key]).

              Kommentar

              Lädt...
              X