PHP อัปโหลดรูป หลายรูป ลงฐานข้อมูล MySQL บทความนี้สอนการสร้างฟอร์มอัปโหลดรูป โดยรองรับการเลือกรูปภาพพร้อมกันหลายรูป ด้วยคำสั่ง multiple พร้อมอัปโหลดชื่อรูปภาพทั้งหมดลงฐานข้อมูล สามารถเขียนโปรแกรมได้ดังนี้
ตัวอย่าง ฐานข้อมูลชื่อ demo ประกอบด้วยตารางชื่อ test
+-------+-----------+
| Field | Type |
+-------+-----------+
| id | int(11) |
| file | char(255) |
+-------+-----------+
ตัวอย่าง PHP อัปโหลดรูป หลายรูป ลงฐานข้อมูล MySQL
<form action="<?=$_SERVER['PHP_SELF'];?>" method="POST" enctype="multipart/form-data">
กรุณาเลือกไฟล์รูปภาพ <input type="file" name="image[]" accept="image/png, image/gif, image/jpeg" multiple><br/>
<input type="submit" value="อัปโหลดไฟล์รูปภาพ">
</form>
<?php
isset( $_FILES['image']['tmp_name'] ) ? $image_tmp_name = $_FILES['image']['tmp_name'] : $image_tmp_name = "";
isset( $_FILES['image']['name'] ) ? $image_name = $_FILES['image']['name'] : $image_name = "";
if( !empty( $image_tmp_name ) && !empty( $image_name ) ) {
$no = 1;
$c = mysqli_connect( "localhost", "root", "", "demo" );
for( $i=0; $i<count( $image_tmp_name ); $i++ ) {
if( move_uploaded_file( $image_tmp_name[$i], $image_name[$i] ) ) {
$sql = " INSERT INTO test (id, file) VALUE (NULL, '".$image_name[$i]."') ";
$q = mysqli_query( $c, $sql );
if( $q ) {
echo "อัปโหลดรูปภาพที่ {$no} ลงฐานข้อมูลเรียบร้อย<br/>";
$no++;
}
}
}
mysqli_close( $c );
}
?>
ผลลัพธ์
อัปโหลดรูปภาพที่ 1 ลงฐานข้อมูลเรียบร้อย
อัปโหลดรูปภาพที่ 2 ลงฐานข้อมูลเรียบร้อย
1. PHP อัปโหลดรูป หลายรูป ลงฐานข้อมูล MySQL เริ่มต้นสร้างฟอร์มพร้อม input file กำหนดตัวแปรชื่อ image[] ชนิด array
2. input file กำหนดให้เลือกได้เฉพาะไฟล์รูปภาพผ้าน accept และเลือกได้มากกว่า 1 รูปภาพผ่าน attribute multiple
3. เมื่อเลือกไฟล์ตามจำนวนที่ต้องการ และกดปุ่ม submit ตัวแปร image จะถูกส่งมาที่ PHP เพื่อรับค่าตัวแปร
4. รับค่า และสร้างตัวแปรเพิ่ม คือ image_tmp_name เก็บตำแหน่งของไฟล์ที่อัปโหลด และ image_name เก็บชื่อไฟล์ที่อัปโหลด
5. ใช้คำสั่ง for วนลูปเท่ากับจำนวนรูปภาพที่เลือกเข้ามา โดยจำนวนรูปภาพที่เลือกเข้ามา ดึงได้จากคำสั่ง count ตัวแปร image_tmp_name
6. ใช้คำสั่ง move_uploaded_file เพื่ออัปโหลดไฟล์เข้า Server
7. เชื่อมต่อฐานข้อมูล MySQL/MariaDB ด้วย mysqli_connect ฐานข้อมูลชื่อ demo
8. ใช้คำสั่ง INSERT INTO เพื่อบันทึกชื่อไฟล์ลงตาราง test