หัวใจของเว็บไซต์ไดนามิก (Dynamic Website) ที่เราใช้งานกันทุกวันนี้ ตั้งแต่เว็บบอร์ด, บล็อก, ไปจนถึง E-commerce คือความสามารถในการ ดึงข้อมูล (Fetch Data) จากฐานข้อมูลมาแสดงผลได้อย่างถูกต้องและรวดเร็ว สำหรับนักพัฒนาเว็บแล้ว การใช้ภาษา PHP เพื่อสื่อสารกับฐานข้อมูล MySQL ถือเป็นทักษะพื้นฐานที่สำคัญที่สุด
บทความนี้จะสรุปขั้นตอนการเชื่อมต่อและดึงข้อมูลแบบเข้าใจง่าย พร้อมโค้ดตัวอย่างที่ปลอดภัยและนำไปใช้งานได้จริง
ภาพรวมการทำงาน 3 ขั้นตอน:
- เชื่อมต่อ (Connect): PHP ต้องทำการ “แนะนำตัว” กับเซิร์ฟเวอร์ MySQL โดยใช้ข้อมูลที่ถูกต้อง (เหมือนการใช้ Username/Password เพื่อล็อกอิน)
- ส่งคำสั่ง (Query): หลังจากเชื่อมต่อสำเร็จ PHP จะส่งคำสั่งภาษา SQL (Structured Query Language) ไปยังฐานข้อมูลเพื่อบอกว่า “ต้องการข้อมูลอะไร”
- แสดงผล (Display): เมื่อ MySQL ส่งข้อมูลกลับมา PHP จะนำข้อมูลเหล่านั้นมาจัดรูปแบบและแสดงผลเป็น HTML บนหน้าเว็บ
วิธีเชื่อมต่อที่ทันสมัยและปลอดภัย: PDO
ในอดีต นักพัฒนา PHP มักใช้ฟังก์ชัน mysql_* ซึ่งปัจจุบัน เลิกใช้แล้วและไม่ปลอดภัยอย่างยิ่ง! วิธีการที่แนะนำในปัจจุบันคือการใช้ PDO (PHP Data Objects) เพราะมีความยืดหยุ่นสูงและช่วยป้องกันการโจมตีประเภท SQL Injection ได้เป็นอย่างดี
Let’s Code! มาเริ่มเขียนโค้ดกัน
สมมติว่าเรามีฐานข้อมูลชื่อ my_store และมีตารางชื่อ products ที่มีข้อมูลสินค้าดังนี้:
id(รหัสสินค้า)name(ชื่อสินค้า)price(ราคา)
ขั้นตอนที่ 1: สร้างไฟล์เชื่อมต่อ (เช่น config.php)
PHP
<?php
// config.php
$host = 'localhost'; // หรือ IP ของเซิร์ฟเวอร์ฐานข้อมูล
$dbname = 'my_store'; // ชื่อฐานข้อมูล
$user = 'root'; // ชื่อผู้ใช้ฐานข้อมูล
$pass = 'your_password'; // รหัสผ่าน
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$dbname;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
?>
- คำอธิบาย: ไฟล์นี้ทำหน้าที่ตั้งค่าการเชื่อมต่อและสร้าง Object
$pdoเตรียมไว้ใช้งาน เราใช้try...catchเพื่อดักจับข้อผิดพลาดหากการเชื่อมต่อล้มเหลว
ขั้นตอนที่ 2: สร้างไฟล์ดึงข้อมูลและแสดงผล (เช่น index.php)
PHP
<?php
// index.php
// เรียกใช้ไฟล์เชื่อมต่อ
require 'config.php';
// 1. เตรียมคำสั่ง SQL
$sql = "SELECT id, name, price FROM products ORDER BY name ASC";
// 2. ส่งคำสั่งไปยังฐานข้อมูล
$stmt = $pdo->query($sql);
?>
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<title>รายการสินค้า</title>
<style>
table { width: 100%; border-collapse: collapse; }
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
th { background-color: #f2f2f2; }
</style>
</head>
<body>
<h1>สินค้าทั้งหมดในร้าน</h1>
<table>
<thead>
<tr>
<th>รหัสสินค้า</th>
<th>ชื่อสินค้า</th>
<th>ราคา (บาท)</th>
</tr>
</thead>
<tbody>
<?php
// 3. วนลูปเพื่อแสดงผลข้อมูลทีละแถว
while ($row = $stmt->fetch()): ?>
<tr>
<td><?= htmlspecialchars($row['id']) ?></td>
<td><?= htmlspecialchars($row['name']) ?></td>
<td><?= number_format($row['price'], 2) ?></td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
</body>
</html>
- คำอธิบาย:
- เราใช้
require 'config.php'เพื่อนำการตั้งค่าการเชื่อมต่อเข้ามา $pdo->query($sql)คือการส่งคำสั่ง SQL ไปทำงานwhile ($row = $stmt->fetch())คือหัวใจของการแสดงผล มันจะดึงข้อมูลออกมาทีละแถว (row) และเก็บในตัวแปร$rowจนกว่าจะหมดhtmlspecialchars()เป็นฟังก์ชันสำคัญที่ช่วยป้องกันการโจมตีแบบ XSS (Cross-site Scripting) โดยการแปลงอักขระพิเศษให้เป็นโค้ด HTML ที่ปลอดภัยก่อนแสดงผล
- เราใช้
เพียงเท่านี้ คุณก็สามารถดึงข้อมูลจาก MySQL มาแสดงผลบนหน้าเว็บด้วย PHP ได้อย่างมืออาชีพและปลอดภัยแล้ว!



