Devdit
 

การ upload ไฟล์ขึ้น server พร้อมเก็บชื่อไฟล์ในฐานข้อมูล

2.4K

สอนเขียนการ upload ไฟล์ขึ้น server พร้อมเก็บชื่อไฟล์ในฐานข้อมูล ด้วยภาษา PHP ฐานข้อมูล MySQL/MariaDB บทความนี้สอนการสร้างฟอร์มอัปโหลดไฟล์ พร้อมเก็บชื่อไฟล์ไว้ในตารางข้อมูล สามารถเขียนโปรแกรมได้ดังนี้

 

ตัวอย่าง ตาราง test ของฐานข้อมูล demo

+-------+-----------+
| Field | Type      |
+-------+-----------+
| id    | int(11)   |
| file  | char(255) |
+-------+-----------+

 

ตัวอย่าง การ upload ไฟล์ขึ้น server พร้อมเก็บชื่อไฟล์ในฐานข้อมูล

<h4>Upload ไฟล์ และเก็บชื่อไฟล์ลงฐานข้อมูล</h4>
<form action="<?=$_SERVER['PHP_SELF'];?>" method="POST" enctype="multipart/form-data">
    เลือกไฟล์ <input type="file" name="f[]" multiple><input type="submit" value="อัปโหลด">
</form>
<?php
    isset( $_FILES['f']['tmp_name'] ) ? $f_tmp_name = $_FILES['f']['tmp_name'] : $f_tmp_name = "";
    isset( $_FILES['f']['name'] ) ? $f_name = $_FILES['f']['name'] : $f_name = "";
    if( !empty( $f_tmp_name ) && !empty( $f_name ) ) {

        $conn = mysqli_connect( "localhost", "root", "", "demo" );
        $counter = 1;

        for( $i=0; $i<count( $f_tmp_name ); $i++ ) {
            
            $tmp_name = $f_tmp_name[$i];
            $name = $f_name[$i];

            if( move_uploaded_file( $tmp_name, $name ) ) {
                
                $q = mysqli_query( $conn, "INSERT INTO test (id, file) VALUE (NULL, '".$name."')" );
                
                if( $q ) {
                    echo $counter.". ไฟล์ {$name} อัปโหลด และเก็บชื่อไฟล์ในฐานข้อมูล<br/>";
                    $counter++;
                }
            }

        }

        mysqli_close( $conn );

    }
?>

ผลลัพธ์

1. ไฟล์ example.png อัปโหลด และเก็บชื่อไฟล์ในฐานข้อมูล
2. ไฟล์ demo02.png อัปโหลด และเก็บชื่อไฟล์ในฐานข้อมูล

คำอธิบาย

1. การ upload ไฟล์ขึ้น server พร้อมเก็บชื่อไฟล์ในฐานข้อมูล เริ่มจากการสร้างฟอร์มเพื่อรับไฟล์จากผู้ใช้งาน โดยกำหนดตัวแปรชื่อ f และใช้ multiple เพื่ออัปโหลดได้หลายไฟล์พร้อมกัน

2. ฝั่ง PHP เชื่อมต่อฐานข้อมูลชื่อ demo ด้วยคำสั่ง mysqli_connect พร้อมกับรับค่าตัวแปร f และใช้คำสั่ง for เพื่อวนลูปข้อมูลเท่ากับจำนวนไฟล์ที่ผู้ใช้งานเลือก

3. ภายใน for ใช้คำสั่ง move_uploaded_file เพื่ออัปโหลดไฟล์เข้า Server และใช้คำสั่ง INERT INTO เพื่อบันทึกชื่อไฟล์ลงฐานข้อมูล test

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