2017-06-04 3 views
0

Ich komme wieder in die Programmierung zurück und bin momentan festgefahren, da ich kein Bild in meine Datenbank hochladen kann. Ich las einige Codes und Antworten letzte Nacht und ich bin immer noch hier stecken..Es gibt "Neuer Datensatz erfolgreich erstellt" aber nichts ist in meiner Datenbank gespeichert. Hoffe, jemand wird mir helfen, einen Workaround zu diesem zu machen :) Danke!Bild hochladen und in der Datenbank speichern

<form method="post" action="" enctype="multipart/form-data"> 

    Upload File: 
    <input type="file" name="upload" /><br> 
    <input type="submit" name="submit" value="Submit"/> 
</form> 
</body> 
</html> 

<?php 
    $servername ="localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "produ_db"; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 
if(isset($_POST['submit']) ){ 


$filename = $conn->real_escape_string($_FILES['upload']['name']); 
$filedata= $conn->real_escape_string(file_get_contents($_FILES['upload']['tmp_name'])); 


if ($_FILES['upload']['name'] == 0){ 

echo "<br><br> New record created successfully"; 

} 

else { 
    /*where acc_cap is the image caption && acc_img is a blob type to store images*/ 
    $query = "INSERT INTO accessories(`acc_cap`,`acc_img`) VALUES ('$filename','$filedata')" ; 
    if ($conn->query($query) === TRUE) { 
    echo "<br><br> New record created successfully"; 
    } else { 
    echo "Error:<br>" . $conn->error; 
    } 

} 
$conn->close(); 
} 

?> 
+0

Es ist üblicher, Dateien im Dateisystem zu speichern. Für Dateien, die größer als 100k sind, macht es wirklich keinen Sinn, etwas anderes zu tun. – Strawberry

+0

Hallo, habe gerade und und machte es zur Arbeit, siehe meinen Kommentar zu manassehkatz :) Danke für die Informationen aber :) Einen schönen Tag haben –

Antwort

1

1 - Sie haben:

echo "<br><br> New record created successfully"; 

zweimal - sowohl im Erfolg (nach INSERT) und Fehler ($_FILES['upload']['name'] == 0). Ändern Sie die Fehlermeldung, damit Sie erkennen können, was passiert.

2 - Move:

$filename = $conn->real_escape_string($_FILES['upload']['name']); 
$filedata= $conn->real_escape_string(file_get_contents($_FILES['upload']['tmp_name'])); 

zu nach dem Test für $_FILES['upload']['name'] wie die Funktion file_get_contents wird scheitern, wenn es keine Namensdatei ist.

3 - Ich überprüfe meinen eigenen Code, es sieht so aus, als ob ich normalerweise $_FILES['upload']['name'] == '' anstatt == 0 verwende. PHP behandelt oft 0 und die leere Zeichenkette ähnlich, aber in diesem Fall glaube ich, dass die leere Zeichenkette der richtige Vergleich ist, da dies ein Zeichenkettenfeld ist, wenn es einen tatsächlichen Dateinamen hat.

4 - Im Allgemeinen als schlechtes Formular betrachtet, um vollständige Bilddateien (oder andere) in der Datenbank zu speichern - besser im Dateisystem zu speichern (siehe http://php.net/manual/en/function.move-uploaded-file.php) mit nur dem Dateinamen in der Datenbank. Manchmal macht es Sinn und ich habe ganze Dateien in Datenbanken gespeichert.

+0

Danke für die schnelle Antwort .. Ich überprüfe dies gerade jetzt :) –

+0

Okay, Ich werde die # 3 wiederholen, die Sie später erwähnt haben. Ich lade die Datei erfolgreich hoch. So habe ich meinen Code bearbeitet und "Fehler" hinzugefügt, wie Sie erwähnt haben, danke dafür, es zu bemerken: https://pastebin.com/FEBFshB3 Ich bekomme jetzt "Fehler: Bild kann nicht gespeichert werden" –

+0

Hallo, ich sah Ihre editierter Post jetzt :) Ich entfernte 0 und fügte '' gemäß Ihrem Rat hinzu und ich danke Ihnen dafür :) Ich bekomme jetzt undefinierte Variable auf Zeile 33: $ query = "INSERT INTO Zubehör (' acc_cap', ' acc_img') VALUES ('$ filename', '$ filedata') "; undefined Variable filedata, Dateiname..aber die Sache ist, es gedruckt neuen Datensatz erfolgreich erstellt und auf meiner Datenbank hat die Blob-Datei 0kb und die acc_cap hat leere Daten –

Verwandte Themen