メインコンテンツへ移動

เนื้อหาภาษาไทย / タイ語のコンテンツ

システムガイド 内容確認済み

Prepared Statements: การใช้งาน execute()

Prepared Statements: การใช้งาน execute()

จากบทที่แล้ว เราได้เรียนรู้เกี่ยวกับการเตรียม SQL statement ด้วย Prepared Statements และการใช้ bindParam() เพื่อผูกตัวแปร PHP กับ placeholder ในคำสั่ง SQL ที่เตรียมไว้ บทนี้จะเน้นไปที่การใช้งาน execute() เพื่อสั่งให้ฐานข้อมูลประมวลผลคำสั่งที่เราเตรียมไว้ รวมถึงการจัดการผลลัพธ์ที่ได้จากการ execute

การเรียกใช้ execute()

หลังจากที่เราเตรียม SQL statement และผูกตัวแปรเรียบร้อยแล้ว ขั้นตอนสุดท้ายคือการสั่งให้ฐานข้อมูลประมวลผลคำสั่งนั้นด้วยฟังก์ชัน execute() ฟังก์ชันนี้จะส่งคำสั่ง SQL ที่เตรียมไว้ไปยังฐานข้อมูล พร้อมทั้งค่าของตัวแปรที่เราผูกไว้ และจะคืนค่าเป็น true หากการ execute สำเร็จ หรือ false หากเกิดข้อผิดพลาด

รูปแบบการใช้งาน execute() ง่ายมาก เพียงแค่เรียกใช้ฟังก์ชันนี้จาก object ของ Prepared Statement ที่เราสร้างไว้

$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->bindParam(':id', $id);

// สั่งให้ฐานข้อมูลประมวลผลคำสั่ง
$result = $stmt->execute();

if ($result) {
    echo "Execute สำเร็จ!";
} else {
    echo "Execute ล้มเหลว!";
}

ในตัวอย่างนี้ เราเตรียมคำสั่ง SQL เพื่อเลือกข้อมูลจากตาราง users โดยมีเงื่อนไขว่า id ต้องเท่ากับค่าที่ผูกไว้กับ placeholder :id จากนั้นเราใช้ execute() เพื่อสั่งให้ฐานข้อมูลประมวลผลคำสั่งนี้ ผลลัพธ์ที่ได้จะถูกเก็บไว้ในตัวแปร $result ซึ่งเราสามารถนำไปตรวจสอบเพื่อดูว่าการ execute สำเร็จหรือไม่

การส่งค่า parameter

นอกจากการใช้ bindParam() เพื่อผูกตัวแปรทีละตัวแล้ว เรายังสามารถส่งค่า parameter ไปพร้อมกับการเรียกใช้ execute() ได้โดยตรง วิธีนี้สะดวกและกระชับกว่า หากเรามี parameter ที่ต้องการส่งไม่มากนัก

รูปแบบการใช้งานคือ การส่ง array ของค่า parameter เป็น argument ให้กับฟังก์ชัน execute() โดย key ของ array จะต้องตรงกับชื่อของ placeholder ใน SQL statement

$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id AND username = :username");

// ส่งค่า parameter ไปพร้อมกับ execute()
$result = $stmt->execute([':id' => $id, ':username' => $username]);

if ($result) {
    echo "Execute สำเร็จ!";
} else {
    echo "Execute ล้มเหลว!";
}

ในตัวอย่างนี้ เราเตรียมคำสั่ง SQL ที่มี placeholder สองตัว คือ :id และ :username เราส่งค่าสำหรับ placeholder ทั้งสองนี้ไปพร้อมกับ execute() โดยสร้าง array ที่มี key เป็นชื่อ placeholder และ value เป็นค่าที่เราต้องการส่ง

การส่งค่า parameter ไปพร้อมกับ execute() เหมาะสำหรับการใช้งานที่ไม่ซับซ้อน แต่หากเราต้องการควบคุมประเภทของข้อมูลที่จะส่ง หรือต้องการส่งค่าแบบอ้างอิง (by reference) การใช้ bindParam() จะมีความยืดหยุ่นมากกว่า

การจัดการผลลัพธ์

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

  • SELECT Statement: หากเรา execute คำสั่ง SELECT เราจะต้องดึงข้อมูลที่ได้จากฐานข้อมูลออกมา โดยใช้ฟังก์ชันต่างๆ เช่น fetch() หรือ fetchAll() ซึ่งจะกล่าวถึงในบทถัดไป
  • INSERT, UPDATE, DELETE Statement: หากเรา execute คำสั่ง INSERT, UPDATE หรือ DELETE เราสามารถตรวจสอบจำนวนแถวที่ได้รับผลกระทบจากการ execute ได้ โดยใช้ฟังก์ชัน rowCount()

ตัวอย่างการใช้ rowCount() เพื่อตรวจสอบจำนวนแถวที่ได้รับผลกระทบจากการ DELETE statement:

$stmt = $pdo->prepare("DELETE FROM users WHERE id = :id");
$stmt->bindParam(':id', $id);

$result = $stmt->execute();

if ($result) {
    // ตรวจสอบจำนวนแถวที่ถูกลบ
    $rowCount = $stmt->rowCount();
    echo "ลบข้อมูลสำเร็จ จำนวน " . $rowCount . " แถว";
} else {
    echo "ลบข้อมูลล้มเหลว!";
}

ในตัวอย่างนี้ เรา execute คำสั่ง DELETE เพื่อลบข้อมูลจากตาราง users จากนั้นเราใช้ rowCount() เพื่อตรวจสอบว่ามีข้อมูลถูกลบไปกี่แถว ฟังก์ชันนี้จะคืนค่าเป็นจำนวนเต็ม ซึ่งเราสามารถนำไปแสดงผล หรือใช้ในการตรวจสอบความถูกต้องของการทำงานได้

การจัดการผลลัพธ์เป็นขั้นตอนสำคัญในการใช้งาน Prepared Statements อย่างถูกต้อง การทำความเข้าใจวิธีการดึงข้อมูลและการตรวจสอบผลลัพธ์ จะช่วยให้เราสามารถสร้าง application ที่ทำงานกับฐานข้อมูลได้อย่างมีประสิทธิภาพและปลอดภัย

สรุป

ในบทนี้ เราได้เรียนรู้เกี่ยวกับการใช้งาน execute() เพื่อสั่งให้ฐานข้อมูลประมวลผล Prepared Statements รวมถึงวิธีการส่งค่า parameter และการจัดการผลลัพธ์ที่ได้จากการ execute การทำความเข้าใจหลักการเหล่านี้เป็นพื้นฐานสำคัญในการใช้งาน PDO และ Prepared Statements อย่างถูกต้อง ซึ่งจะช่วยให้เราสามารถสร้าง application ที่มีความปลอดภัยและมีประสิทธิภาพมากยิ่งขึ้น ในบทถัดไป เราจะเจาะลึกถึงวิธีการดึงข้อมูลจากฐานข้อมูลด้วย PDO โดยใช้ฟังก์ชัน fetch() และ fetchAll()

Office.in.th Custom Service

この構成をもとにシステムを開発・カスタマイズしたいですか?

Office.in.th は、エンタープライズ Web アプリケーション、API 連携、官民の業務管理システムの設計・開発を承り、長期的なサポートも提供します。

ソフトウェア開発サービスを見る