A-AA+then

การเก็บรูปภาพลงบน MySQL ก็ไม่ได้ยุ่งยากอะไรครับ อย่างแรกก็สร้างฟิลด์ picture เป็นชนิด Blob ก่อนเลย และอีกฟิลด์ชื่อ pic_type, pic_name เป็น varchar ครับ ฟิลด์ picture เราจะเอาไว้เก็บข้อมูลรูปภาพ ส่วนฟิลด์ pic_type เราจะเอาไว้เก็บ Header ของรูปเพื่อการแสดงผลครับ และฟิลด์ pic_name จะเก็บชื่อรูปครับ

การเก็บรูปภาพลงบนฐานข้อมูล ขั้นตอนแรก อ่านไฟล์รูปออกมาก่อนครับ

$fileupload=$_FILES["fileupload"];//มาจากการ Upload
$handle=fopen($fileupload[tmp_name], "rb");//เปิดไฟล์เพื่ออ่าน (binary)
$imgdata=fread($handle, filesize($fileupload[tmp_name]));//อ่านไฟล์
$imgdata=addslashes($imgdata);
fclose($handle);//เปิดแล้วปิดไฟล์ด้วย
แล้วก็บันทึกลงบนฐานข้อมูล ด้วย query นี้ (สามารถมีรายการอื่นเพิ่มเติมได้)
$sql="INSERT INTO `tablename` ( `picture` , `pic_type` , `pic_name` ) VALUES ( `$imgdata`, `$fileupload[type]`, `$fileupload[name]` );";

เพียงแค่นี้ รูปก็ลงไปอยู่ยังฐานข้อมูลแล้วครับ สำหรับขั้นตอนในการอ่าน เราต้องกำหนด Header ให้กับการอ่านครับ เพื่อให้สามารถแสดงรูปภาพได้อย่างถูกต้อง สมมุติว่าเรา query ออกมาจากฐานข้อมูลแล้วนะครับ
header("Content-type: $result['pic_type']");//กำหนด Header เพื่อบอกว่าเป็นรูปชนิดใด
print $result['picture'];//แสดงรูปภาพ

ถ้ารูปภามมีขนาดใหญ่ ควรใช้ ฟิลด์ชนิด LongBlob หรือ MediumBlob แทน Blob นะครับ เนื่องจากมันจะสามารถเก็บข้อมูลได้ขนาดใหญ่กว่า

PHPSQL

Relate

^