Re: [請益] 如何用PHP讀取已存在Mysql的BLOB圖檔資 …

看板PHP作者 (O⊥M)時間18年前 (2007/05/24 16:06), 編輯推噓5(506)
留言11則, 3人參與, 最新討論串2/4 (看更多)
※ 引述《taikobo (有比扯鈴扯嗎?)》之銘言: : ~Second.php~ : <?PHP : 《連接資料庫》 : $result = $link->query("SELECT p1 FROM t where s_num=$id"); : $row= $result->fetch_object(); : header(jpg); ^^^^^^^^^^^^ 這個地方可能有點問題,應該要符合 http header 的格式, 除非你之前有 define('jpg', 'Content-type: image/jpeg'); 否則應該是:header("Content-type: image/jpeg");

05/24 15:10,
你必需要把一整個檔案當作一個header後的jpeg或gif才行
05/24 15:10

05/24 15:10,
而且圖片外不可以有任何字,也不能有空白,要很乾淨
05/24 15:10
: echo $row->image; ^^^^^^^^^^^^^^^^^ 這部分應如 shadowjohn 所說的,除了圖片二元檔外, 不應參有其他東西; 假設在 header() 之前有任何程序產生錯誤碼、並 print out.. 那麼會造成圖片顯示上的一些錯誤,如:無法顯示圖片等 : ?> : ==大概是這個樣子== : 全域變數的問題是我耍笨了...把程式重新改寫 : 經過改寫無效,錯誤訊息也變了 : ==錯誤訊息== : Fatal error: Call to a member function query() on a non-object in C:\Program : Files\Apache Software Foundation\Apache2.2\htdocs\Second.php on : line 4 : ============ : $result = $link->query("SELECT p1 FROM t where s_num=$id");

05/24 15:28,
現在是你 的$link 是物件嗎??
05/24 15:28

05/24 15:29,
php mysqli / mysql
05/24 15:29
如 alpe 所提示的,產生錯誤的可能是紅色的這段程式碼。 如果 $link 是 mysqli 所產生的資料庫連結(資源)物件、 或是其他提供 query() 方法的物件,才能這樣用。 依錯誤訊息,$link 應該不是個物件;請檢查一下資料庫的連結程式是否正確。 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.199.121

05/24 16:11, , 1F
很詳盡的解說,真的很感謝您熱心的幫忙...好感動^^
05/24 16:11, 1F
※ 編輯: foxzgerald 來自: 140.119.199.121 (05/24 16:15)

05/24 16:39, , 2F
(心)
05/24 16:39, 2F

05/24 16:40, , 3F
我的相簿也都存db...show圖自動壓縮..上傳自動壓圖...
05/24 16:40, 3F

05/24 16:41, , 4F
配合GD後製圖片可以作很多事~像浮水印、加密、縮放圖
05/24 16:41, 4F

05/24 16:42, , 5F
不過我的欄位是用longtext,不是用blob,可以試看看
05/24 16:42, 5F

05/24 16:43, , 6F
MySQL的BLOB大小有64K, 純二元碼可以考慮用MEDIUMBLOB
05/24 16:43, 6F

05/24 16:44, , 7F
或 LONGBLOB ,我用longtext...因為我還轉成base64..
05/24 16:44, 7F

05/24 16:47, , 8F
轉成字串的話. 要注意處理脫序字元的問題..
05/24 16:47, 8F

05/24 16:53, , 9F
如果要轉成 base64 ..可參考我在 2982 所做的回應 :)
05/24 16:53, 9F

05/24 16:55, , 10F
其實可以直接用php 5.2以上版本跟mysql 5.0.26以上...
05/24 16:55, 10F

05/24 16:57, , 11F
好文!
05/24 16:57, 11F
文章代碼(AID): #16LKU0m3 (PHP)
文章代碼(AID): #16LKU0m3 (PHP)