Skip to main content

เนื้อหาภาษาไทย / Thai content

System guide Content reviewed

CRUD Operations: การสร้างข้อมูล (CREATE)

บทนี้อธิบายถึงการสร้างข้อมูลใหม่ (CREATE) ในฐานข้อมูลโดยใช้ PDO และ SQL INSERT statement โดยเน้นการใช้ prepared statements เพื่อป้องกัน SQL Injection และการผูกค...

CRUD Operations - การสร้างข้อมูล (CREATE)

ในบทนี้ เราจะมาเรียนรู้วิธีการสร้างข้อมูลใหม่ในฐานข้อมูลโดยใช้ PDO (PHP Data Objects) ซึ่งเป็นส่วนหนึ่งของ CRUD Operations (Create, Read, Update, Delete) ที่สำคัญในการจัดการฐานข้อมูล

ก่อนที่เราจะเริ่มเขียนโค้ด เรามาทบทวนความหมายของ CRUD Operations กันอีกครั้ง:

  • Create (สร้าง): การเพิ่มข้อมูลใหม่ลงในฐานข้อมูล
  • Read (อ่าน): การดึงข้อมูลจากฐานข้อมูล
  • Update (แก้ไข): การปรับปรุงข้อมูลที่มีอยู่ในฐานข้อมูล
  • Delete (ลบ): การลบข้อมูลออกจากฐานข้อมูล

ในบทนี้ เราจะเน้นไปที่การ Create หรือการสร้างข้อมูลใหม่

การเขียน SQL INSERT statement

การสร้างข้อมูลใหม่ในฐานข้อมูลเริ่มต้นด้วยการเขียน SQL INSERT statement ซึ่งเป็นคำสั่งที่ใช้เพิ่มข้อมูลลงในตารางที่ระบุ รูปแบบพื้นฐานของ INSERT statement คือ:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

โดย:

  • table_name คือชื่อตารางที่คุณต้องการเพิ่มข้อมูล
  • column1, column2, column3, ... คือชื่อคอลัมน์ที่คุณต้องการระบุค่า
  • value1, value2, value3, ... คือค่าที่คุณต้องการใส่ในแต่ละคอลัมน์

ตัวอย่าง: สมมติว่าเรามีตารางชื่อ users ที่มีคอลัมน์ id, username, และ email เราสามารถเพิ่มผู้ใช้ใหม่ได้ดังนี้:

INSERT INTO users (username, email)
VALUES ('john_doe', 'john.doe@example.com');

ในตัวอย่างนี้ เราไม่ได้ระบุค่าสำหรับคอลัมน์ id เนื่องจากโดยทั่วไปแล้วคอลัมน์นี้จะเป็น auto-increment และถูกจัดการโดยฐานข้อมูลเอง

การใช้ prepared statement

ในบทก่อนหน้า เราได้เรียนรู้เกี่ยวกับการใช้ prepared statements เพื่อป้องกัน SQL Injection ซึ่งเป็นเทคนิคการโจมตีที่อันตราย Prepared statements ช่วยให้เราแยกส่วนคำสั่ง SQL ออกจากข้อมูล ทำให้ฐานข้อมูลสามารถจัดการข้อมูลได้อย่างปลอดภัย

เราจะใช้ prepared statements ในการสร้างข้อมูลใหม่ด้วย PDO เช่นกัน นี่คือขั้นตอน:

  1. เตรียม SQL INSERT statement ด้วย placeholders
  2. ผูกค่าให้กับ placeholders โดยใช้ bindParam()
  3. execute the statement

ตัวอย่าง:

<?php

// ข้อมูลสำหรับผู้ใช้ใหม่
$username = 'jane_doe';
$email = 'jane.doe@example.com';

// เชื่อมต่อกับฐานข้อมูล (แทนที่ด้วยข้อมูลการเชื่อมต่อของคุณ)
$host = 'localhost';
$dbname = 'my_database';
$user = 'root';
$password = '';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // เตรียม SQL INSERT statement ด้วย placeholders
    $stmt = $pdo->prepare("INSERT INTO users (username, email) VALUES (:username, :email)");

    // ผูกค่าให้กับ placeholders โดยใช้ bindParam()
    $stmt->bindParam(':username', $username);
    $stmt->bindParam(':email', $email);

    // execute the statement
    $stmt->execute();

    echo "เพิ่มผู้ใช้ใหม่สำเร็จ!";

} catch (PDOException $e) {
    echo "เกิดข้อผิดพลาด: " . $e->getMessage();
}

?>

คำอธิบายโค้ด:

  • เราสร้างตัวแปร $username และ $email เพื่อเก็บข้อมูลของผู้ใช้ใหม่
  • เราสร้างออบเจ็กต์ PDO เพื่อเชื่อมต่อกับฐานข้อมูล
  • เราใช้เมธอด prepare() เพื่อเตรียม SQL INSERT statement โดยใช้ :username และ :email เป็น placeholders
  • เราใช้เมธอด bindParam() เพื่อผูกค่าของตัวแปร $username และ $email กับ placeholders ที่เกี่ยวข้อง
  • เราใช้เมธอด execute() เพื่อ execute the prepared statement ซึ่งจะทำการเพิ่มข้อมูลใหม่ลงในตาราง users
  • เราใช้ try-catch block เพื่อจัดการกับข้อผิดพลาดที่อาจเกิดขึ้นระหว่างการเชื่อมต่อและ execute คำสั่ง SQL

การตรวจสอบผลลัพธ์

หลังจากที่เรา execute the INSERT statement แล้ว เราควรตรวจสอบว่าการเพิ่มข้อมูลสำเร็จหรือไม่ เราสามารถทำได้โดยการใช้เมธอด rowCount() ซึ่งจะคืนค่าจำนวนแถวที่ได้รับผลกระทบจากการ execute คำสั่ง SQL

ตัวอย่าง:

<?php

// ... (โค้ดเชื่อมต่อฐานข้อมูลและเตรียม prepared statement จากตัวอย่างก่อนหน้า)

try {
    // ... (โค้ดเตรียม prepared statement และ bindParam() จากตัวอย่างก่อนหน้า)

    // execute the statement
    $stmt->execute();

    // ตรวจสอบจำนวนแถวที่ได้รับผลกระทบ
    $rowCount = $stmt->rowCount();

    if ($rowCount > 0) {
        echo "เพิ่มผู้ใช้ใหม่สำเร็จ! จำนวนแถวที่ได้รับผลกระทบ: " . $rowCount;
    } else {
        echo "ไม่สามารถเพิ่มผู้ใช้ใหม่ได้!";
    }

} catch (PDOException $e) {
    echo "เกิดข้อผิดพลาด: " . $e->getMessage();
}

?>

ในตัวอย่างนี้ เราเรียกใช้เมธอด rowCount() หลังจาก execute the statement และตรวจสอบว่าค่าที่ได้มากกว่า 0 หรือไม่ ถ้ามากกว่า 0 แสดงว่าการเพิ่มข้อมูลสำเร็จ

สรุป

ในบทนี้ เราได้เรียนรู้วิธีการสร้างข้อมูลใหม่ในฐานข้อมูลโดยใช้ PDO และ prepared statements เราได้เรียนรู้เกี่ยวกับ:

  • การเขียน SQL INSERT statement
  • การใช้ prepared statements เพื่อป้องกัน SQL Injection
  • การใช้ bindParam() เพื่อผูกค่าให้กับ placeholders
  • การใช้ execute() เพื่อ execute the prepared statement
  • การใช้ rowCount() เพื่อตรวจสอบผลลัพธ์

ในบทต่อไป เราจะเรียนรู้วิธีการอ่านข้อมูลจากฐานข้อมูล (READ) ซึ่งเป็นอีกส่วนหนึ่งที่สำคัญของ CRUD Operations

Office.in.th Custom Service

Want to build or adapt a system from this structure?

Office.in.th designs and develops enterprise web applications, API integrations, and public- and private-sector management systems, with long-term support.

See our software development service