Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Probleme beim Laden von Blob Dateien

Dieses Thema im Forum "Oracle" wurde erstellt von Molli33, 23 Januar 2018.

  1. Molli33

    Molli33 Neuer Benutzer

    Hallo zusammen,

    ich habe Probleme mit folgendem Script.
    Er läd das Bild einfach nicht in die Datenbank.
    Die Spalte bleibt immer leer.
    Bei meinen Kollegen funktioniert es einwandfrei.
    Brauche ich dafür Trigger in der Oracle Datenbank?

    Spalte in der Datenbank heißt definitiv "BILD" und die übergeben Dtei heißt auch "bild-upload"

    PHP-Code:


    f(isset($_POST['speichern']))
    {

    $name = $_POST['musicalname'];
    $spielort = $_POST['spielort'];
    $minuten = $_POST['minuten'];
    $sitzplaetze = $_POST['sitzplaetze'];
    $jahr = $_POST['jahr'];
    $genre = $_POST['genre'];

    $stmnt = oci_parse($conn, $sql_string);
    oci_execute($stmnt, OCI_DEFAULT);
    oci_commit($conn);

    if($_FILES['bild']['name'] != "")
    {

    $blob = oci_new_descriptor($conn, OCI_D_LOB);

    $sql_string = "INSERT INTO MUSICALS2 (MUSICALNUMMER, NAME, SPIELORT, MINUTEN, SITZPLAETZE, JAHR, GENRE, BILD)
    VALUES(MUSICAL_SEQUENCE1.nextval,'$name','$spielor t','$minuten','$sitzplaetze','$jahr','$genre', EMPTY_BLOB()) RETURNING BILD INTO :bild";

    }

    else
    {
    $sql_string = "INSERT INTO MUSICALS2 (MUSICALNUMMER, NAME, SPIELORT, MINUTEN, SITZPLAETZE, JAHR, GENRE)
    VALUES(MUSICAL_SEQUENCE1.nextval,'$name','$spielor t','$minuten','$sitzplaetze','$jahr','$genre')";
    }

    $stmnt = oci_parse($conn, $sql_string);

    if($_FILES['bild']['name'] != "")
    {
    oci_bind_by_name ($stmnt, ":bild", $blob, -1, OCI_B_BLOB);
    }

    oci_execute($stmnt, OCI_DEFAULT);

    if($_FILES['bild']['name'] != "")
    {

    if (!$blob->savefile($_FILES['bild-upload']['tmp_name']))
    {
    oci_rollback($conn);
    oci_free_descriptor($blob);
    oci_free_statement($stmnt);
    oci_close($conn);
    die();
    }
    }

    oci_commit($conn);
    sleep(1);
    }
    Als Vergelich hier noch der HTML Code:

    HTML-Code:


    <span class='text'><u>Bitte geben Sie die Daten des Musicals ein und klicken Sie auf speichern:</u><p></span>
    <form action='neues_musical_php.php' method='post'>
    <input name='musicalname'>Musicalname<br>
    <input name='spielort'>Spielort<br>
    <input name='minuten'>Spiellänge in Minuten<br>
    <input name='sitzplaetze'>Sitzplätze<br><p>
    <input name='jahr'>Spieljahr<br>
    <p>
    <select name='genre'>Genre<br>
    <option value='komoedie'selected>Komödie</option><p>
    <option value='drama'>Drama</option>
    <option value='horror'selected>Horror</option><p>
    <option value='romantik'selected>Romantik</option><p>
    </select><p>
    <input type="file" name="bild-upload" accept="image/*">Logo Upload<br>
    <p>
    <input type='submit' name='speichern' value='Speichern'>
    <input type='reset' value='reset'><br/>
    </form>


    Es wäre super lieb, wenn mir einer schnell helfen könnte.

    Vielen Dank
     
  2. drdimitri

    drdimitri Datenbank-Guru

  3. akretschmer

    akretschmer Datenbank-Guru

    yeah, ist eher ein PHP-Problem.

    • keine Fehlerbehandlung, sagte ich Dir schon im letzten Thread
    • sieht nach SQL-Injection auf (weiß nicht, ob oci_execute() da noch Schutzmechanismen hat, aber Du übernimmst erst einmal ungeprüft POST-Parameter
     
    Walter gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden