PlusMagi's Blog By Pitt Phunsanit

PHP: การใช้งาน MySQLi ฉบับเข้าใจง่าย

ในการเขียน PHP เพื่อจัดการกับฐานข้อมูล MySQL นั้น MySQLi เป็นหนึ่งในเครื่องมือมาตรฐานที่นิยมที่สุด (ย่อมาจาก MySQL Improved) ตัวมันเองรองรับการเขียนทั้งแบบ Object-Oriented (OOP) และแบบ Procedural แต่ในปัจจุบันแนะนำให้ฝึกแบบ OOP เป็นหลักเพราะอ่านง่ายและต่อยอดได้ดีกว่าครับ


การเชื่อมต่อฐานข้อมูล (Database Connection)

เริ่มต้นเราต้องสร้าง Object ของ MySQLi ขึ้นมาโดยใส่ที่อยู่ Host, Username, Password และชื่อฐานข้อมูลครับ

<?php
$host = "localhost";
$username = "root";
$password = "";
$dbname = "my_website";

// สร้างการเชื่อมต่อ
$conn = new mysqli($host, $username, $password, $dbname);

// ตรวจสอบความผิดพลาด
if ($conn->connect_error) {
    die("เชื่อมต่อล้มเหลว: " . $conn->connect_error);
}
echo "เชื่อมต่อสำเร็จ!";
?>

การดึงข้อมูลมาแสดงผล (SELECT)

เมื่อเชื่อมต่อได้แล้ว เราจะใช้คำสั่ง SQL ผ่าน Method $conn->query() และใช้ Loop เพื่อดึงข้อมูลออกมาแสดงผลทีละแถว

$sql = "SELECT id, firstname, lastname FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // วนลูปดึงข้อมูลทีละแถวออกมาเป็น Array แบบ Assoc
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - ชื่อ: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "ไม่พบข้อมูล";
}

การเพิ่มข้อมูลอย่างปลอดภัย (INSERT)

⚠️ ข้อควรระวัง: การเอาตัวแปรจาก User (เช่น จากฟอร์ม $_POST) ไปใส่ในคำสั่ง SQL ตรงๆ เสี่ยงต่อการโดน SQL Injection มากๆ ดังนั้นเราควรใช้ Prepared Statements เสมอครับ

// ข้อมูลสมมุติที่รับมาจากฟอร์ม
$fname = "John";
$lname = "Doe";

// 1. เตรียมคำสั่ง SQL โดยใช้เครื่องหมาย ? แทนค่าตัวแปร
$stmt = $conn->prepare("INSERT INTO users (firstname, lastname) VALUES (?, ?)");

// 2. ผูกตัวแปรเข้ากับเครื่องหมาย ? (s = string, i = integer)
$stmt->bind_param("ss", $fname, $lname);

// 3. สั่งประมวลผล
if ($stmt->execute()) {
    echo "เพิ่มข้อมูลสำเร็จ!";
} else {
    echo "เกิดข้อผิดพลาด: " . $stmt->error;
}

// ปิดการทำงานของ Statement
$stmt->close();

การปิดการเชื่อมต่อ

เมื่อทำงานเสร็จสิ้นแล้ว การปิด Connection จะช่วยคืนระบบทรัพยากร (Resource) ให้กับ Server ครับ

$conn->close();

สรุป: ทำไมต้องใช้ MySQLi?


อ่านเพิ่มเติม

Exit mobile version