2012-06-11 38 views
0

我實現以下圖像大小調整: http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/開捕致命錯誤:類SimpleImage的對象無法轉換爲字符串(鑄造變種不工作)

現在,我要上傳的圖片插入到數據庫。

include('simple_image.php'); 
$image_rez = new SimpleImage(); 
$image_rez->load($file); 
$image_rez->resizeToWidth(990); 
$image_rez->save($image_name.'.jpg'); 

$sql = "INSERT INTO 
      `Media_images` (`ID`,`Name`,`Image`,`Size`) 
     VALUES 
      (?, ?, ?, ?) 
     "; 

$stmt = $db->prepare($sql); 

if (!$stmt) { 
    echo 'Datenbankfehler\n'; 
    echo $db->error; 
} 

$stmt->bind_param('ssss', $_POST['id'], $image_name, (string)$image_rez, $image_size); 

if (!$stmt->execute()) { 
    echo 'Datenbankfehler\n'; 
    echo $stmt->error; 
} 

//Cache löschen 
destroy(PATH); 
//Redirekt wenn erfolgreich eingetragen 
header("location:../../index.php?section=media"); 
die; 

但即時得到以下錯誤:

開捕致命錯誤:類SimpleImage的對象不能轉換爲字符串。

錯誤線是我綁定$圖像的地方。我怎樣才能將此對象轉換爲字符串?嘗試鑄造(字符串)($ image_rez)但沒有成功。

+0

想要將數據存儲在BLOB列中,還是隻存儲第th個文件路徑? – DaveRandom

回答

1

$ image_rez將是一個圖像,它最好作爲一個blob存儲在您的數據庫中。將bind_param中的類型更改爲b,然後刪除(字符串)。

此外,$ image_rez不是圖片,而是您的整個SimpleImage對象。您應該在該綁定中使用file_get_contents($ image_name。'。jpg')而不是$ image_rez。

注意:數據庫不是存儲圖像的正確位置。您應該將其存儲在文件系統中,並存儲數據庫中存儲的映像路徑。

+1

不,圖像最好作爲圖像存儲在文件系統中,引用數據庫中的文件路徑。 –

+0

同意,但如果@JPM希望它在數據庫中因任何原因,它應該存儲爲BLOB而不是字符串。 –

+0

很明顯,但他不應該這樣做,數據庫是用來保存圖像的錯誤工具。這應該在你的答案中註明。 –

相關問題