Ein Bild aus einer Datenbank mittels PHP
ersten mal mit stack-überlauf.
Ich habe den folgenden Teil 2 youtube tutorial über das hochladen/speichern ein Bild in einer MYSQL-Datenbank. Ich habe die Anweisungen befolgt, aber mein Bild wird nicht angezeigt bei mir. Ich benutze connect.php die Verbindung zu der Datenbank, das scheint einwandfrei zu funktionieren. Es scheint, das problem ist mit get.php als wenn ich testen echo keine Bilder von ihm bekomme ich immer noch kein Bild.
verwendet phpmyadmin um die Datenbank zu erstellen und bin mit xampp.
hier ist der link zu dem youtube-tutorials
http://www.youtube.com/watch?v=CxY3FR9doHI
http://www.youtube.com/watch?v=vFZfJZ_WNC4&feature=fvwrel
Enthalten sind die Dateien
<html>
<head>
<title>Upload an image</title>
</head>
<body>
<form action="index.php" method="POST" enctype="multipart/form-data">
File:
<input type="file" name="image"> <input type="submit" value="Upload">
</form>
<?php
include 'connect.php';
//file properties
$file = $_FILES['image']['tmp_name'];
if(!isset($file))
echo "Please select an image.";
else{
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name=addslashes($_FILES['image']['name']);
$image_size = getimagesize($_FILES['image']['tmp_name']);
if ($image_size==FALSE)
echo "That's not an image.";
else{
if(!$insert = mysql_query("INSERT INTO store VALUES('','$image_name','$image')"))
echo"Problem uploading image";
else{
$lastid = mysql_insert_id();
echo "image uploaded.<p />your image:<p /><img src=get.php?id=$lastid>";
}
}
}
?>
</body>
</html>
Hier get.php
<?php
include 'connect.php';
$id=stripslashes($_REQUEST('id'));
$image = mysql_query("SELECT * FROM store WHERE id=$id");
$image = mysql_fetch_assoc($image);
$image=$image('image');
header("content-type: image/jpeg");
?>
Und schließlich verbinden
<?php
//connect to database
$db_host="localhost";
$db_username="root";
$db_pass="";
$db_name="test";
@mysql_connect("$db_host","$db_username","$db_pass") or die("Could not connect to mysql");
mysql_select_db("$db_name")or die("Cant find database");
?>
- Ich sehe, dass du bist suprsessing Fehler an mindestens einer Stelle (der
@
- symbol). Sind Sie auf der überprüfung der Rückgabewerte bei allen? Überprüfen Sie Ihr Fehlerprotokoll? $_REQUEST('id')
sollte$_REQUEST['id']
sowie- +1 für eine gute erste Frage, die enthalten alle relevanten code und mit einer guten Menge an Informationen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre
get.php
nichtecho $image
.Auch
$image=$image('image');
sollte$image=$image['image'];
, und$_REQUEST('id')
sollte$_REQUEST['id']
.P. S. nicht verwenden
addslashes
zur Vorbeugung gegen SQL-Injektionen. Verwendenmysql_real_escape_string
.Du nie echo werden die Bilddaten in get.php so servieren Sie sehen eine leere 0-byte-Bild.
Ihnen fehlt eine Zeile nach der Kopfzeile Ausgabe
Sehr schnellen Blick, in get.php ändern:
$image=$image('image');
zu
$image=$image['image'];
mysql_fetch_assoc() konvertiert die Ergebnisse in ein array.
Du besser bas64_encoding eine Decodierung, die Weise, die keine ansi-chars nicht erstellen ein problem.
base64_encode(file_get_contents($_FILES['image']['tmp_name']));
Dies ist falsch, wie array [] nicht ()
include 'connect.php';
Stück code, den ich verwenden, in eine site von mir:
Sieht es aus wie Sie gehen, die aktuelle Ausgabe der Bild-Daten, und die Länge, die erforderlich sein könnten, die von einigen Browsern...