我正在嘗試編寫一個函數來處理mySQL/PHP中的圖像,但無法計算出如何存儲結果。我已經包含了一個精簡版的代碼來演示這個問題。如何將圖像作爲Blob存儲在數據庫中?
image.image_o中的斑點都被正確存儲並可用於將圖像輸出到網頁。該函數運行沒有錯誤,但之後在image.image_r blob只是幾個字節長,幷包含文本,如「資源ID#5」
我相信我做的事愚蠢 - 只是不能看到它是什麼。
function process_images(){
global $mysql
$sql = "select id, image_o from image";
$res = mysqli_query($mysqli, $sql);
if ($res){
while ($ay = mysqli_fetch_array($res, MYSQLI_ASSOC)){
$id = $ay['id'];
$im = imagecreatefromstring($ay['image_o']);
// do something useful with the image
$sql2 = "update image set image_r = '{$im}' where id = $id";
$res2 = mysqli_query($mysqli, $sql2);
if ($res2){
// blah blah
}else{
echo mysqli_error($mysqli)." in res2";
}
}
}else{
echo mysqli_error($mysqli)." in res";
}
}
您知道將圖像存儲在數據庫中是不明智的嗎?你爲了...而犧牲了性能... ... – Layke
數據庫是不正確的圖像的地方。將圖像存儲在常規文件系統中,並在DB中保留引用(文件名+路徑等) –
我通常會同意上述內容。只是爲了扮演Devil的倡導者,如果你有多個應用程序服務器和一個數據庫,你可能希望將文件存儲在數據庫中,但由於託管限制或其他限制,沒有一個好方法來建立共享文件系統。這當然不是理想的,但那不是重點。 –