Devdit
 

PHP อัปโหลดรูป หลายรูป ลงฐานข้อมูล MySQL

3.9K

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

แก้ไข 2 ปีที่แล้ว
ชอบ
ลิ้งก์
แชร์
Devdit มีช่อง YouTube แล้ว
เราสร้างวิดีโอเกี่ยวกับเทคโนโลยี ทำตามง่ายๆ