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

  • #16
    Zitat von hausl Beitrag anzeigen
    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();


    AHH! Jetzt habe ich es verstanden... vielen Dank!

    Kommentar


    • #17
      Im Idealfall stellst du allerdings einen Query zusammen, der genau 1 INSERT enthält und alle Values auf einmal übermittelt. Das verringert die Last auf dem Server immens. Entweder du nutzt dazu implode() und arrays, oder einen QueryBuilder (siehe Signatur).

      Code:
      INSERT INTO foo (bar, foobar, foo)
      VALUES (?, ?, ?), (?, ?, ?), (?, ?, ?), [...]
      [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

      Kommentar


      • #18
        Hier noch ein Vorschlag. Der hat allerdings eine Schwäche in Sachen SQL-Injection (müsste man dann real_escape_string verwenden) und bei einer besonders hohen Anzahl von Inserts stösst man dann irgendwann auf die my_allowed_packet Limitierung seitens MySQL.


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

        $values = array();

        $i 1;
            for (
        $i 1$i <= $amount$i++){
                
        $code substr(str_shuffle('ABCDEFGHIJKLMNPQRSTUVWXYZ0123456789'), 010);
                
        $wcode $codetag $code;
                
        $values[] = "('$creator','$timestamp','$codetag','$wcode')";
            }  


        $multi_insert "INSERT INTO pub_codes (creator, created, codetag, code)
                VALUES "
        .implode(",",$values);


        $mysqli->query($multi_insert); 
        [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

        Kommentar

        Lädt...
        X