Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL multiple insert?

Einklappen

Neue Werbung 2019

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

  • MySQL multiple insert?

    Hallo,

    ​ich würde gerne eine bestimmte Anzahl an Datensätzen, welche beim Absenden des Formulars zufällig generiert generiert werden, in meine Datenbank eintragen.
    Könnte mir da vllt. jemand behilflich sein? Wie ein normaler Eintrag funktioniert weiß ich, aber wie verbinde ich das mit der beliebigen Anzahl?
    PHP-Code:
    <?php
        $code 
    substr(str_shuffle('ABCDEFGHIJKLMNPQRSTUVWXYZ0123456789'), 010);
        
    $codetag $_POST['codetag'];
        
    $amount $_POST['amount'];
        
    $creator $_SESSION['id'];
        
    $timestamp date('Y-m-d H:i:s');

        
    $in_ "INSERT INTO codes (creator, created, codetag, code)
                    VALUES ('
    $creator', '$timestamp', '$codetag', '$code')";
        
    $ins_ $db->prepare($in_);
        
    $ins_->execute();
    ?>
    Ich bedanke mich schon mal im Voraus.

  • #2
    Du veränderst die Platzhalter und führst
    PHP-Code:
    $ins_ -> execute() 
    aus.
    Nutzt du mysqli oder PDO?

    Kommentar


    • #3
      Zitat von eT18 Beitrag anzeigen
      Nutzt du mysqli oder PDO?
      Ich nutze mysqli.

      Kommentar


      • #4
        PHP-Code:
        $in_ "INSERT INTO codes (creator, created, codetag, code)
                        VALUES (?, ?, ?, ?)"
        ;
        $ins_ $db->prepare($in_);
        $ins_ -> bind_param("ssss"$creator$timestamp$codetag$code);
        while(...){
            
        // Hier die Platzhalter verändern
            
        $ins_ -> execute();

        Kommentar


        • #5
          Das will irgendwie nicht. Ich glaube ich bin zu doof dafür. :/

          Kommentar


          • #6
            Damit kommen wir aber nicht weiter.. Zeig deinen aktuellen Code.. Was passiert oder passiert nicht.. Gibt es Fehler etc etc.. das wäre weit produktiver.
            The string "()()" is not palindrom but the String "())(" is.

            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


            • #7
              Habe alles wieder wie oben. Was meint eT18 mit "Platzhalter"? #Anfänger

              Kommentar


              • #8
                Du hast von eT18 ein Beispiel in #4 bekommen, hast du das angeschaut? Das und die Doku (da sind auch Beispiele) sollte reichen. Sonst deinen konkreten Versuch posten.


                #Anfänger
                #lerneGrundlagen
                The string "()()" is not palindrom but the String "())(" is.

                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


                • #9
                  http://php.net/manual/en/mysqli.quic...statements.php

                  Kommentar


                  • #10
                    Aktuell sieht es wie folgt aus:
                    PHP-Code:
                    if (!empty($_POST['cc_codetag']) && !empty($_POST['amount'])){
                    $creator $_SESSION['id'];
                    $timestamp date('Y-m-d H:i:s');
                    $codetag $_POST['cc_codetag'];
                    $amount trim($_POST['amount']);
                    $code substr(str_shuffle('ABCDEFGHIJKLMNPQRSTUVWXYZ01234 56789'), 010);
                    $wcode $codetag $code;
                    $i 1;
                      
                    $in_ "INSERT INTO pub_codes (creator, created, codetag, code)
                      VALUES (?, ?, ?, ?)"
                    ;
                      
                    $ins_ $db->prepare($in_);
                      
                    $ins_ -> bind_param("ssss"$creator$timestamp$codetag$wcode);
                        while(
                    $i <= $amount){
                          
                    $in_ "INSERT INTO pub_codes (creator, created, codetag, code)
                          VALUES (?, ?, ?, ?)"
                    ;
                          
                    $ins_ -> execute();
                       
                    $i++;

                    Er erstellt mir immer nur einen Code und führt die Schleife nicht aus.

                    Kommentar


                    • #11
                      $in_ in der Schleife kannst du weg lassen.

                      Wie kommst du darauf, dass die Schleife nicht durchlaufen wird?

                      Lass dir mal $amount vor der Schleife ausgeben.


                      PS: Anstatt einer while-Schleife könntest du hier z.B. eine for-Schleife nutzen.

                      PHP-Code:
                      for($i 1$i <= $amount$i++){
                          
                      $ins_ -> execute();

                      Das ist aber nur nebensächlich.

                      Kommentar


                      • #12
                        Schau das Beispiel oben nochmals genau an.

                        PHP-Code:
                            // Hier die Platzhalter verändern 
                        Das fehlt noch in der Schleife, dafür gehört die Query raus.
                        The string "()()" is not palindrom but the String "())(" is.

                        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


                        • #13
                          Ah, jetzt kommen wir der Sache schon etwas näher.
                          Der Code sieht jetzt wie folgt aus:

                          PHP-Code:
                                                      if (!empty($_POST['cc_codetag']) && !empty($_POST['amount'])){
                                                          
                          $creator $_SESSION['id'];
                                                          
                          $timestamp date('Y-m-d H:i:s');
                                                          
                          $codetag $_POST['cc_codetag'];
                                                          
                          $amount $_POST['amount'];
                                                          
                          $code substr(str_shuffle('ABCDEFGHIJKLMNPQRSTUVWXYZ0123456789'), 010);
                                                          
                          $wcode $codetag $code;
                                                          
                          $i 1;
                                                          
                          $in_ "INSERT INTO pub_codes (creator, created, codetag, code)
                                                                  VALUES (?, ?, ?, ?)"
                          ;
                                                          
                          $ins_ $db->prepare($in_);
                                                          
                          $ins_ -> bind_param("ssss"$creator$timestamp$codetag$wcode);
                                                          for(
                          $i 1$i <= $amount$i++){
                                                              echo 
                          $amount;
                                                          } 
                          Wenn ich jetzt z.B. 5 eingebe, gibt er es auch 5x aus. Wenn ich jetzt allerdings wieder
                          PHP-Code:
                          "INSERT INTO pub_codes (creator, created, codetag, code)
                                    VALUES ('
                          $creator', '$timestamp', '$codetag', '$wcode')";
                                    
                          $ins_ -> execute(); 
                          anstatt
                          PHP-Code:
                          echo $amount
                          einsetze, macht er wieder nur einen Eintrag in die Datenbank.

                          Kommentar


                          • #14
                            Der sich verändernde Wert gehört auch in die Schleife, weil du ja mehr verschiedene Codes von einem User und einem Zeitpunkt anlegen willst, oder?

                            Also so igendwie.. (hier frei getippt)

                            PHP-Code:
                            $creator $_SESSION['id'];
                            $timestamp date('Y-m-d H:i:s');
                            $codetag $_POST['cc_codetag'];
                            $amount $_POST['amount'];

                            $i 1;
                            $in_ "INSERT INTO pub_codes (creator, created, codetag, code)
                                    VALUES (?, ?, ?, ?)"
                            ;
                            $ins_ $db->prepare($in_);
                            $ins_ -> bind_param("ssss"$creator$timestamp$codetag$wcode);

                            for (
                            $i 1$i <= $amount$i++){

                                
                            $code substr(str_shuffle('ABCDEFGHIJKLMNPQRSTUVWXYZ0123456789'), 010);
                                
                            $wcode $codetag $code;
                                
                            $ins_ -> execute();

                            The string "()()" is not palindrom but the String "())(" is.

                            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


                            • #15
                              Lies dir bitte mal den Link durch, den ich in #9 gepostet habe. Da ist das mit den prepared statements erklärt.

                              PHP-Code:
                              "INSERT INTO pub_codes (creator, created, codetag, code)
                                        VALUES ('
                              $creator', '$timestamp', '$codetag', '$wcode')"
                              Hat nichts in der Schleife zu suchen.

                              Kommentar

                              Lädt...
                              X