ระบบจัดการข้อมูลพื้นฐานเป็นหัวใจสำคัญของเว็บแอปพลิเคชันทุกชนิด ไม่ว่าจะเป็นระบบกรอกคะแนนนักเรียน, ระบบจัดการสต็อกสินค้า, หรือสมุดโทรศัพท์ออนไลน์ แก่นหลักของการพัฒนาระบบเหล่านี้คือการทำงานแบบ CRUD (Create, Read, Update, Delete) ซึ่งบทความนี้จะเจาะลึกวิธีการใช้ PHP เป็นภาษาหลักในการเชื่อมต่อและจัดการข้อมูลใน MySQL ให้คุณสามารถสร้างระบบที่ใช้งานได้จริง
1. องค์ประกอบหลักของระบบ CRUD (Create, Read, Update, Delete)
ระบบจัดการข้อมูลใด ๆ ต้องรองรับฟังก์ชันพื้นฐาน 4 อย่างนี้ โดย PHP และ MySQL เป็นคู่หูที่สมบูรณ์แบบในการทำให้ฟังก์ชันเหล่านี้เกิดขึ้น:
| ฟังก์ชัน | การทำงาน | คำสั่ง SQL หลัก | ส่วนประกอบ PHP/HTML |
| Create (เพิ่ม) | การเพิ่มข้อมูลใหม่เข้าไปในตาราง (เช่น เพิ่มวิชาและคะแนนใหม่) | INSERT INTO | แบบฟอร์ม HTML (<form>), ไฟล์ PHP สำหรับรับค่า ($_POST) |
| Read (อ่าน) | การดึงข้อมูลที่มีอยู่มาแสดงผล (เช่น แสดงตารางคะแนนทั้งหมด) | SELECT * FROM | ไฟล์ PHP สำหรับ Query และวนลูปแสดงผล (while หรือ foreach) |
| Update (แก้ไข) | การเปลี่ยนแปลงข้อมูลที่มีอยู่ (เช่น แก้ไขคะแนนที่กรอกผิด) | UPDATE ... SET ... WHERE | แบบฟอร์ม HTML ที่มีค่าเดิม, ไฟล์ PHP สำหรับรับค่าและรัน Query |
| Delete (ลบ) | การลบข้อมูลออกจากตารางอย่างถาวร (เช่น ลบข้อมูลวิชาที่ไม่เกี่ยวข้อง) | DELETE FROM ... WHERE | ปุ่มลบ (Delete button), ไฟล์ PHP สำหรับรัน Query (มักมีการยืนยันก่อน) |
2. การเตรียมฐานข้อมูล: หัวใจของระบบกรอกคะแนน
ก่อนเขียนโค้ด PHP เราต้องสร้างโครงสร้างฐานข้อมูลใน MySQL (ผ่าน phpMyAdmin หรือเครื่องมืออื่น ๆ) โดยตัวอย่างตารางสำหรับระบบกรอกคะแนนอาจมีโครงสร้างดังนี้:
| Field (ชื่อคอลัมน์) | Data Type | คำอธิบาย |
| id | INT (Primary Key, Auto Increment) | รหัสอ้างอิงของแถวข้อมูล (ห้ามซ้ำ) |
| student_id | VARCHAR | รหัสนักเรียน |
| subject_name | VARCHAR | ชื่อวิชา (เช่น คณิตศาสตร์) |
| score | INT | คะแนนที่ได้ |
| date_recorded | DATETIME | วันที่บันทึกคะแนน |
คำสั่ง SQL สำหรับสร้างตาราง (ตัวอย่าง):
SQL
CREATE TABLE scores (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
student_id VARCHAR(10) NOT NULL,
subject_name VARCHAR(100) NOT NULL,
score INT(3) NOT NULL,
date_recorded DATETIME NOT NULL
);
3. การเขียนโค้ด PHP: เชื่อมต่อและจัดการ (Integration)
การเชื่อมต่อ PHP กับ MySQL ในปัจจุบันควรใช้ส่วนขยาย PDO (PHP Data Objects) หรือ MySQLi เนื่องจากมีความปลอดภัยและประสิทธิภาพสูงกว่าฟังก์ชัน mysql_* แบบเก่า
ขั้นตอนที่ 1: ไฟล์เชื่อมต่อฐานข้อมูล (db_connect.php)
ไฟล์นี้จะทำหน้าที่สร้างการเชื่อมต่อกับฐานข้อมูล โดยใช้รูปแบบ PDO ที่มีความปลอดภัยสูงกว่า:
PHP
<?php
$host = 'localhost'; // หรือ IP Address ของฐานข้อมูล
$dbname = 'your_database_name';
$username = 'your_mysql_username';
$password = 'your_mysql_password';
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// echo "Connection successful"; // ใช้สำหรับทดสอบ
} catch(PDOException $e) {
die("Connection failed: " . $e->getMessage());
}
?>
ขั้นตอนที่ 2: การเพิ่มข้อมูล (Create)
- สร้างไฟล์ HTML Form เพื่อรับค่า (
student_id,subject_name,score) - ไฟล์ PHP รับค่าจากฟอร์ม (
$_POST) และใช้ Prepared Statements เพื่อป้องกัน SQL Injection:
PHP
<?php
// ... นำเข้าไฟล์ db_connect.php ...
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$student_id = $_POST['student_id'];
$subject_name = $_POST['subject_name'];
$score = $_POST['score'];
$sql = "INSERT INTO scores (student_id, subject_name, score, date_recorded)
VALUES (:sid, :sname, :score, NOW())";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':sid', $student_id);
$stmt->bindParam(':sname', $subject_name);
$stmt->bindParam(':score', $score);
if ($stmt->execute()) {
echo "บันทึกคะแนนสำเร็จ!";
} else {
echo "เกิดข้อผิดพลาดในการบันทึก";
}
}
?>
ขั้นตอนที่ 3: การแสดงข้อมูล (Read)
ไฟล์นี้จะดึงคะแนนทั้งหมดมาแสดงในรูปแบบตาราง:
PHP
<?php
// ... นำเข้าไฟล์ db_connect.php ...
$stmt = $conn->prepare("SELECT * FROM scores ORDER BY date_recorded DESC");
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<table>";
echo "<tr><th>รหัสนักเรียน</th><th>วิชา</th><th>คะแนน</th><th>วันที่บันทึก</th></tr>";
foreach ($results as $row) {
echo "<tr>";
echo "<td>" . htmlspecialchars($row['student_id']) . "</td>";
echo "<td>" . htmlspecialchars($row['subject_name']) . "</td>";
echo "<td>" . htmlspecialchars($row['score']) . "</td>";
echo "<td>" . $row['date_recorded'] . "</td>";
// เพิ่มปุ่มแก้ไข/ลบในส่วนนี้
echo "</tr>";
}
echo "</table>";
?>
สรุป: ก้าวต่อไปสำหรับระบบจัดการข้อมูล
การทำระบบกรอกคะแนนด้วย PHP & MySQL เป็นตัวอย่างที่ยอดเยี่ยมสำหรับการฝึกฝนการทำ CRUD เมื่อเข้าใจหลักการพื้นฐานแล้ว คุณสามารถต่อยอดได้อีกมาก เช่น:
- การจัดการฟอร์ม: ใช้ Bootstrap เพื่อออกแบบฟอร์มและตารางให้สวยงามและ Responsive
- ความปลอดภัย: เพิ่มการตรวจสอบความถูกต้องของข้อมูล (Validation) และใช้ Prepared Statements เสมอ
- การใช้งานร่วมกับ JavaScript: ใช้ AJAX และ JavaScript/jQuery เพื่อเพิ่ม, ลบ, แก้ไขข้อมูล โดยไม่ต้องโหลดหน้าเว็บใหม่ทั้งหมด (เพื่อประสบการณ์ใช้งานที่รวดเร็ว)



