Ankündigung

Einklappen
Keine Ankündigung bisher.

Image aus Datenbank auslesen und sichtbar machen.

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #46
    Der Code:

    Code:
    if(isset($_POST['submit']) && ($_FILES['file']['size'] !== 0)) {
    
    $stmt = $pdo->prepare("insert into images (id, contenttype, imagedata) values (?, ?, ?)");
    $id = get_new_id(); // Eine Funktion zum Allokieren der neuen ID
    
    // Wir nehmen an, das Skript läuft als Teil eines Datei-Upload-Formulars
    // Sie finden weitere Informationen in der PHP-Dokumentation
    
    $fp = fopen($_FILES['file']['tmp_name'], 'rb');
    
    $stmt->bindParam(1, $id);
    $stmt->bindParam(2, $_FILES['file']['type']);
    $stmt->bindParam(3, $fp, PDO::PARAM_LOB);
    
    $pdo->beginTransaction();
    $stmt->execute();
    $pdo->commit();
    
      header("Location: spirituosen.php");
    
    }
    und sein Begleiter:

    Fatal error: Uncaught Error: Call to undefined function get_new_id() in C:\xampp\htdocs\versandparty.de\admin.php:8 Stack trace: #0 {main} thrown in C:\xampp\htdocs\versandparty.de\admin.php on line 8
    Wie kann ich es jetzt machen, dass das Script keine ID generiert, sondern das die Datenbank machen lässt?

    Vielen Dank für Eure Hilfe

    Kommentar


    • #47
      Brauchst du nicht. Das kann die Datenbank selber.

      Kommentar


      • #48
        Dass sie das kann, weiss ich.
        Und wie weiss ich auch.
        Ich meine wie ich diese Zeile

        Code:
        $stmt->bindParam(1, $id);
        umschreiben muss...

        Kommentar


        • #49
          Zitat von king-ich Beitrag anzeigen
          Dass sie das kann, weiss ich.
          Und wie weiss ich auch.
          Ich meine wie ich diese Zeile

          Code:
          $stmt->bindParam(1, $id);
          umschreiben muss...
          Die brauchst du nicht. Die ID lass weg und sie wird von der Datenbank generiert.

          Kommentar


          • #50
            Geht nicht...

            Wenn ich die Zeile weg lasse bekomme ich eine Fehlermeldung.

            Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

            Kommentar


            • #51
              Du musst den Platzhalter dann auch aus dem SQL-Statement rausnehmen.
              Außerdem muss die Spalte id in der Datenbank als autoincrement eingestellt sein.
              [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
              [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

              Kommentar


              • #52
                Hab ich beides.
                Wenn ich die Zeile

                Code:
                 
                 $stmt->bindParam(1, $id);
                weg lasse, und den Platzhalter so:
                Code:
                ('', ?, ?)
                oder so:
                Code:
                (?, ?)
                oder so
                Code:
                (, ?, ?)
                schreibe, bekomme ich trotzdem die Fehlermeldung.

                Kommentar


                • #53
                  Du must natürlich auch id aus deiner Liste der Feldnamen entfernen, dann brauchst du auch nur 2 Platzhalter für die Values und das bindParam mit id muss auch weg!

                  Kommentar


                  • #54
                    Code:
                    if(isset($_POST['submit']) && ($_FILES['file']['size'] !== 0)) {
                    
                    $stmt = $pdo->prepare("insert into produkte (contenttype, imagedata) values (?, ?)");
                    
                    $fp = fopen($_FILES['file']['tmp_name'], 'rb');
                    
                    $stmt->bindParam(2, $_FILES['file']['type']);
                    $stmt->bindParam(3, $fp, PDO::PARAM_LOB);
                    
                    $pdo->beginTransaction();
                    $stmt->execute();
                    $pdo->commit();
                    
                      header("Location: spirituosen.php");
                    
                    }
                    funktioniert nicht. Fehlermeldung:

                    Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

                    Kommentar


                    • #55

                      $stmt->bindParam(2, $_FILES['file']['type']);
                      $stmt->bindParam(3, $fp, PDO::PARAM_LOB);

                      Hm. Vielleicht.
                      [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                      [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                      Kommentar


                      • #56
                        So geht's nicht.

                        Kommentar


                        • #57
                          Code:
                          $stmt->bindParam(1, $_FILES['file']['type']);
                          $stmt->bindParam(2, $fp, PDO::PARAM_LOB);
                          SO?

                          Dann steht was in der Datenbank : TYPE & Datei, aber das Bild kann ich immer noch nicht sichtbar machen.

                          Kommentar


                          • #58
                            Das macht so keinen Sinn. Du hast keine Ahnung, was du tust. Du bist nicht fähig brauchbare Fehlerbeschreibungen zu liefern. Du zeigst keine Eigeninitiativer selber was zu lernen. Mit so einer Einstellung, hast du in einem Forum eigentlich nichts verloren. Es ist um jede Minute schade, die man mit dir verbringt. Es wäre für alle Teilnehmenden besser, du würdest nicht mehr in einem Programmierforum posten und du lässt die Arbeit von jemandem machen, der weiß was er tut oder wie/wo er sich das Wissen aneignen kann.

                            Kommentar


                            • #59
                              Wir sind nun auf Seite 4 angelangt. Du hast Tipps und Links bekommen, die Du durcharbeiten solltest.
                              Vor allem aber solltest Du wirklich Grundlagen lernen. Das ist nicht schlimmes, die haben wir alle mal lernen müssen. Aber ohne die macht es leider keinen Sinn mehr in diesem Thread.

                              Ich beenden das somit an dieser Stelle,
                              danke für Dein Verständnis

                              [MOD: geschlossen]
                              Competence-Center -> Enjoy the Informatrix
                              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                              Kommentar

                              Lädt...
                              X