2014-03-29 66 views
-1

我想上載圖像到數據庫,圖像只會在用戶回顯時發出,但它不起作用,並且不會給我任何錯誤使用php上傳圖像到數據庫

<?php 

session_start(); 

    $pic = $_FILES['pic']; 
    $submit = $_POST['post']; 
    $user = $_SESSION['username']; 

    if($submit){ 
     $connect = mysql_connect("localhost", "root", "123"); 
     if($connect){ 
      $database = mysql_select_db("phplogin"); 
      if($database){ 
       mysql_query("INSERT INTO images(image, user) VALUES ($pic, $user)"); 
       $query = mysql_query("SELECT * FROM images WHERE user = '$user'"); 
       $data2 = mysql_fetch_array($query); 
       header("Content-type: image/jpeg"); 
       echo $data2['image']; 
      } else { 
       die("Couldn't connect to the database please try again, if you fail to connect again please contact me"); 
      } 
     } else { 
      die("Couldn't connect to the database please try again, if you fail to connect again please contact me"); 
     } 
    } 



?> 
+0

您的'$ pic'變量是文件項目的信息數組,它只是一個關於文件的信息數組而不是實際的文件內容 –

+0

如何使它成爲文件內容 – user3470226

+0

瞭解如何進行基本調試。 – CBroe

回答

1

將圖像保存在你的服務器,您需要先獲取該文件的內容,然後將其插入到數據庫中。此外,您的查詢不會關閉單引號中的變量。

//Need to get contents then escape any characters that match 
//mysql query elements like quotes etc. 
$contents = mysql_real_escape_string(file_get_contents($_FILES['pic']['tmp_name'])); 
$result = mysql_query("INSERT INTO images(image, user) VALUES ('$contents', '$user')"); 
if($result === FALSE){ 
    //insert failed echo error and die 
    echo mysql_error(); 
    die; 
} 
$query = mysql_query("SELECT * FROM images WHERE user = '$user'"); 
$data2 = mysql_fetch_array($query); 
header("Content-type: image/jpeg"); 
echo $data2['image']; 

請注意,您應該使用mysqli和準備的語句來代替。 mysql_ *和mysql類是折舊的,並且使用預準備語句對於防止注入攻擊更好。

+0

感謝您的工作,但現在要在另一個頁面上的圖像,我只是再次查詢數據庫,然後回顯出來? – user3470226

+0

@ user3470226,是的,爲了顯示只是創建一個腳本,查看行,發送標題,然後回顯圖像數據,然後使用指向文件的url,而不是使用指向文件的url腳本的url –

+0

感謝那不能確定那部分。 – user3470226

0

您必須將圖像名稱保存在數據庫表中。

$pic = $_FILES['pic']['name']; 

你應該在文件夾中使用副本()PHP函數

copy($_FILES['pic']['tmp_name'],'path_to_folder/'.$_FILES['name']); 
+0

他希望保存在數據庫本身的圖像。 –

+0

我們不能將圖像保存到數據庫中,我們只能保存名稱,我已經在上面解釋清楚了。 – Ananth

+0

您當然可以將圖像保存到數據庫,使用longblob列並獲取文件內容並將其插入到該列中。雖然有一個枯萎的問題,你應該這樣做。 –