การเชื่อมต่อ MySQL ด้วย PDO
สร้างการเชื่อมต่อ PDO ด้วย DSN ชื่อผู้ใช้ และรหัสผ่าน
การเชื่อมต่อ MySQL ด้วย PDO เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
PDO คืออะไร
PDO (อ็อบเจ็กต์ข้อมูลของ PHP) คือชั้นนามธรรมสำหรับเข้าถึงฐานข้อมูล API เดียวกันนี้ทำงานร่วมกับ MySQL, PostgreSQL, SQLite และฐานข้อมูลอื่น ๆ ได้ เพียงเปลี่ยน DSN
DSN
สตริง DSN (ชื่อแหล่งข้อมูล) ใช้ระบุไดรเวอร์ โฮสต์ พอร์ต และชื่อฐานข้อมูล
<?php
$dsn = "mysql:host=127.0.0.1;port=3306;dbname=myapp;charset=utf8mb4";การสร้างอินสแตนซ์ PDO
ส่ง DSN ชื่อผู้ใช้ และรหัสผ่านให้กับตัวสร้างของ PDO ควรครอบด้วย try/catch เพื่อจัดการข้อผิดพลาดในการเชื่อมต่อ
<?php
try {
$pdo = new PDO(
"mysql:host=127.0.0.1;dbname=myapp;charset=utf8mb4",
"db_user",
"db_pass"
);
} catch (PDOException $e) {
die("Connection failed: ".$e->getMessage());
}โหมดข้อผิดพลาด
ตั้งค่าโหมดข้อผิดพลาดให้โยนข้อยกเว้น เพื่อไม่ให้ข้อผิดพลาดถูกละเลยโดยไม่มีการแจ้งเตือน
<?php
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);โหมดการดึงข้อมูลเริ่มต้น
กำหนดรูปแบบการดึงข้อมูลเริ่มต้น โดยทั่วไปอาร์เรย์แบบเชื่อมโยงจะใช้งานสะดวกที่สุด
<?php
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);การตั้งค่าการเชื่อมต่อทั้งหมด
แนวทางปฏิบัติที่ดีคือ สร้าง PDO เพียงครั้งเดียวพร้อมแอตทริบิวต์ทั้งหมด แล้วแบ่งปันอินสแตนซ์นั้น
<?php
function createPDO(): PDO {
return new PDO(
"mysql:host=127.0.0.1;dbname=myapp;charset=utf8mb4",
"root", "secret",
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]
);
}การเตรียมคำสั่งจำลอง
การตั้งค่า ATTR_EMULATE_PREPARES เป็น false จะใช้คำสั่งที่เตรียมไว้จริงบนเซิร์ฟเวอร์ ซึ่งปลอดภัยและมีประสิทธิภาพมากกว่า
charset=utf8mb4
ระบุ charset=utf8mb4 ใน DSN เสมอ เพราะรองรับช่วง Unicode ทั้งหมด รวมถึงอีโมจิ อย่าใช้นามแฝง utf8 แบบเก่า
การเรียกใช้คำสั่งแบบง่าย
ใช้ query() เฉพาะกับคำสั่งที่ไม่มีข้อมูลจากผู้ใช้เท่านั้น
<?php
$stmt = $pdo->query("SELECT COUNT(*) as total FROM users");
$row = $stmt->fetch();
echo $row["total"];exec() สำหรับคำสั่งที่ไม่ใช่ SELECT
exec() เรียกใช้คำสั่งที่ไม่ส่งค่ากลับ และคืนค่าจำนวนแถวที่ได้รับผลกระทบ
<?php
$count = $pdo->exec("DELETE FROM sessions WHERE expires_at < NOW()");
echo "Deleted $count expired sessions";การเชื่อมต่อแบบคงอยู่
PDO รองรับการเชื่อมต่อแบบคงอยู่ผ่าน PDO::ATTR_PERSISTENT => true ในสภาพแวดล้อม PHP-FPM โดยทั่วไปมักนิยมใช้กลุ่มการเชื่อมต่อมากกว่า
สรุป
สร้าง PDO ด้วย DSN ตั้งค่า ERRMODE_EXCEPTION และ FETCH_ASSOC และปิดการเตรียมคำสั่งจำลอง อย่าเรียกใช้ query() กับข้อมูลที่ผู้ใช้ส่งมา ให้ใช้คำสั่งที่เตรียมไว้แทน
ตรวจสอบอย่างรวดเร็ว
แอตทริบิวต์ใดทำให้ PDO โยนข้อยกเว้นเมื่อเกิดข้อผิดพลาด
คำถามที่พบบ่อย
บทเรียน “การเชื่อมต่อ MySQL ด้วย PDO” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเชื่อมต่อ MySQL ด้วย PDO” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเชื่อมต่อ MySQL ด้วย PDO”
สร้างการเชื่อมต่อ PDO ด้วย DSN ชื่อผู้ใช้ และรหัสผ่าน คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การเชื่อมต่อ MySQL ด้วย PDO” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม
ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การเชื่อมต่อ MySQL ด้วย PDO
- คำสั่งที่เตรียมไว้และการผูกค่า
- การดึงผลลัพธ์ด้วย PDO
- ทรานแซกชันด้วย PDO