Ankündigung

Einklappen
Keine Ankündigung bisher.

Prepared statement funktioniert nicht

Einklappen

Neue Werbung 2019

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

  • #16
    Und die Zeile 68 ist
    echo $backid;
    Tjoa, und diese Zeile steht nicht im Code oben.

    "Zeile der Notice" sagt mir nichts.
    Undefined variable: backid in ... on line 68"
    Und die Zeile 68 ist
    Jetzt mal ehrlich!
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #17
      vielen dank, das wars!

      Kommentar


      • #18
        Zitat von nikosch Beitrag anzeigen
        Tjoa, und diese Zeile steht nicht im Code oben.


        Jetzt mal ehrlich!
        ganz ehrlich, ich hatte keine Ahnung, was du gemeint hast. Jetzt wenn du es so auflistest, fällt es mir natürlich auch wie Schuppen von den Augen (auch wenn ich doch noch einen Moment gebraucht hatte)

        Sorry, und danke für die Hilfe

        Kommentar


        • #19
          Lösung:
          Will man zwei Mysql-queries gleichzeitig ausführen, so muss man die Ausgabe der ersten query nach dem Ausführen im cache zwischenspeichern, damit die zweite query ausgeführt werden kann:
          mysqli_stmt_bind_param($stmt, "i", $id);
          mysqli_stmt_execute($stmt);
          mysqli_stmt_store_result($stmt);
          mysqli_stmt_bind_result($stmt, $imgname, $thisdatetime);
          mysqli_stmt_fetch($stmt);
          mysqli_stmt_free_result($stmt);

          Will man mehr als zwei queries gleichzeitig laufen lassen, muss man anscheinend den Memory wieder freigeben (mysqli_stmt_free_result()).

          Bitte korrigiert mich, wenn ich das falsch verstanden habe.

          Kommentar


          • #20
            Zitat von kammerjaeger Beitrag anzeigen
            PHP-Code:
                    $backquery "SELECT id FROM images WHERE datetime < ? ORDER BY datetime DESC LIMIT 1";
                    
            $backstmt mysqli_stmt_init($verbindung);
                    if (
            mysqli_stmt_prepare($backstmt$backquery)) :
                        if (!
            $backstmt) :
                            die(
            'mysqli error: '.mysqli_error($verbindung));
                        endif;
                        
                        if (!
            mysqli_stmt_bind_param($backstmt"i"$thisdatetime)) :
                            die(
            'mysqli error: '.mysqli_error($verbindung));
                        endif;
                        if (!
            mysqli_stmt_execute($backstmt)) :
                            die(
            'mysqli error: '.mysqli_error($verbindung));
                        endif;
                        if (!
            mysqli_stmt_bind_result($backstmt$backid)) :
                            die(
            'mysqli error: '.mysqli_error($verbindung));
                        endif;
                        if (!
            mysqli_stmt_fetch($backstmt)) :
                            die(
            'mysqli error: '.mysqli_error($verbindung));
                        endif;
                    endif; 
            so als tipp: um nicht immer überall den fehler abfragen zu müssen kannst du mysqli auch einfach auf exceptions umstellen.

            einfach das hier vor der ersten verbindung zur datenbank schreiben:
            PHP-Code:
            $driver = new mysqli_driver();
            $driver->report_mode MYSQLI_REPORT_ERROR|MYSQLI_REPORT_STRICT
            dann braucht man nie wieder mysqli_error() abfragen.

            der code von oben würde dann so aussehen:

            PHP-Code:
            $backquery "SELECT id FROM images WHERE datetime < ? ORDER BY datetime DESC LIMIT 1";
            $backstmt mysqli_stmt_init($verbindung);
            mysqli_stmt_prepare($backstmt$backquery);    
            mysqli_stmt_bind_param($backstmt"i"$thisdatetime);
            mysqli_stmt_execute($backstmt);
            mysqli_stmt_bind_result($backstmt$backid);
            mysqli_stmt_fetch($backstmt); 
            das ist um einiges kürzer und vorallem wäre dir der thread erspart geblieben, weil du den fehler bei mysqli_prepare sofort bekommen hättest.
            liebe Grüße
            Fräulein Dingsda

            Kommentar

            Lädt...
            X