สอนเขียนการ 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