0Pricing
PHP Academy · บทเรียน

การเชื่อมต่อ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเชื่อมต่อ MySQL ด้วย PDO
  2. คำสั่งที่เตรียมไว้และการผูกค่า
  3. การดึงผลลัพธ์ด้วย PDO
  4. ทรานแซกชันด้วย PDO
← กลับไปที่ PHP Academy