2012-05-10 19 views
0

mysqlデータベースに保存されている画像を表示しようとしています。 ..だからそれは、DBに格納し、何か(適切なサイズ)を行いますが、私はそれが手動であるかを見ることができない..私は、これはOKだとし(mysql dbに保存されている)phpファイルの画像を表示

if (isset($_SESSION['mod']) && (isset($_GET['upload']))) { 
    if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) { 

    $con = mysql_connect("localhost", "root"); 
    mysql_select_db("psi", $con); 

     // Temporary file name stored on the server 
     $tmpName = $_FILES['image']['tmp_name']; 

     // Read the file 
     $fp  = fopen($tmpName, 'r'); 
     $data = fread($fp, filesize($tmpName)); 
     $data = addslashes($data); 
     fclose($fp); 

     //now i use <tmpName> as an actual name of file 
     $tmpName = $_FILES['image']['name']; 
     if (isset($_GET['name'])) 
     $tmpName = $_GET['name']; 

     $uname = $_SESSION['uname']; 
     $idObj = mysql_query("SELECT id_object AS id FROM tobject WHERE uname = '$uname'"); 
     $idObj = mysql_fetch_assoc($idObj); 
     $idObj = $idObj['id']; 

     // Create the query and insert 
     // into our database. 
     $query = "INSERT INTO slike "; 
     $query .= "VALUES ('', '$idObj', '$data', '$tmpName')"; 
     $results = mysql_query($query, $con); 

     // Print results 
     print "Thank you, your file has been uploaded."; 

} 
else { 
    print "No image selected/uploaded"; 
} 

}

: 私はそれをこのように保存します、私はこのコードでそれを取得しようとすると:

else if (isset($_GET['idSlike'])) { 
$idSlike = $_GET['idSlike']; 

    $con = mysql_connect("localhost", "root"); 
    mysql_select_db("psi", $con); 

$res = mysql_query("SELECT slika FROM slike WHERE id_slika = '$idSlike'"); 
if (!$res) { 
    die("greska: " . mysql_error()); 
}; 

$slika = mysql_fetch_array($res); 
$slika = $slika['slika']; 
header('Content-Type: ' . $slika['mimetype']); 
echo $slika; 
} 

注:DBからの両方の保存と取得画像が同じファイルで (image.php)です...

私は何も得ることはありません... 私はそれを表示してみました:

<img src="image.php?idSlike=10"/> 

私のハードコードのIDが、彼らは私も

で試してみました

デシベルに存在します

echo "<img src=\"image.php?idSlike=13\">"; 

もう1つのPHPファイルがありますが、空きの画像があります(正しいsrcを使用)

私はxamppを使用しています(mysql 5.5.16; PHP 5.3.8)...と開発環境での通知や警告の

+0

あなたの質問に記載されている問題の横に、 SQLインジェクションを見てください。あなたのスクリプトはそれに対して脆弱です! – stUrb

+0

私はそれを見てくれてありがとう.. :) – maricn

+0

古代の 'mysql_ *'関数で新しいコードを書いてください。それらはもはや維持されず、コミュニティは[非推奨プロセス](http://goo.gl/KJveJ)を開始しました。代わりに、[準備完了ステートメント](http://goo.gl/vn8zQ)について学び、[PDO](http://php.net/pdo)または[MySQLi](http://php.net/)を使用する必要があります。 mysqli)。あなたが決定できない場合、[この記事](http://goo.gl/3gqF9)が選択に役立ちます。あなたが学びたい人は、[ここではかなり良いPDO関連のチュートリアルです](http://goo.gl/vFWnC)。 –

答えて

1

入れます:あなたは非sensicleある事をやっている(そして、あなたならばPHPはそれについて教えてくれます

ini_set("display_errors", 1); 
error_reporting(E_ALL); 

それを聞かせてください):

$slika = mysql_fetch_array($res); 
$slika = $slika['slika']; 
header('Content-Type: ' . $slika['mimetype']); // <-- $slika is a string not an array 
echo $slika; // <-- if $slika is an array here, you can not echo is like this 
+0

エラー報告は何も報告しませんでした... – maricn

+0

'ini_set(" display_errors "、1);と同様に – Halcyon

+0

私はこの分野のかなりのノブですので、配列は素晴らしいでしょう... 私はそれのために考えました:$ slika = $ slika ['slika'];私はBLOBに直接アクセスしています... – maricn

関連する問題