สรุปการ Query ข้อมูลโดยใช้ PDO


สรุปการ Query ข้อมูลโดยใช้ PDO

แบ่งออกเป็น 3 กรณีใหญ่ๆ

  • Query ข้อมูลที่ไม่มีผลลัพธ์ ได้แก่ (เพิ่ม , ปรับปรุง , ลบ)
  • Query ข้อมูลแบบ Single Time
  • Query ข้อมูลแบบ Multiple Times



คิวรี่ข้อมูล (ไม่ต้องการ Response) 
(เพิ่ม,ปรับปรุง,ลบ) มี 2 method ที่ใช้งานคือ 
exec และ lastInsertId


  • exec

ใช้ execute คำสั่ง SQL ได้เพียง 1 คำสั่ง
ผลลัพธ์ : จำนวนแถวที่มีการเปลี่ยนแปลงตามคำสั่ง SQL

ตัวอย่าง :

$sql = "INSERT INTO member (member_name) VALUES ('ak1')";
$result = $obj_pdo->exec($sql);


  • lastInsertId
เป็น method สำหรับ คืนค่า ID ของแถวข้อมูลที่เพิ่มครั้งล่าสุด มาเก็บในตัวแปร

ตัวอย่าง :
$result = $obj_pdo->lastInsertId();
echo 'ID ของแถวข้อมูลที่เพิ่มล่าสุด :' .$result;




การ SELECT ข้อมูลมาใช้งาน

  • method : query()  
คืนค่าเป็น Object ของ Class โดยการเรียกผลลัพธ์นี้มาแสดงผลสามารถใช้ : foreach();
ตัวอย่าง :
$sql = "SELECT * FROM member";
$q = $obj_pdo->query($sql);
$result = q->fetchAll();
print_r($result);



การคิวรี่แบบ Multiple Times

เป็นการคิวรี่แบบจัดเตรียมคำสั่ง SQL ไว้ก่อนโดยใช้  Method : prepare();
และจะมีการผูกพารามิเตอร์ให้กับคำสั่ง SQL ที่เตรียมไว้โดยใช้ method : bindParam();
และกำหนดพารามิเตอร์ภายหลัง โดยการคิวรี่คำสั่งที่เตรียมไว้โดยใช้ Method : execute();
  • สามารถคิวรี่ข้อมูลได้ไม่จำกัดจำนวนครั้ง
  • ใช้ได้กับทุกคำสั่ง SQL เช่น select , insert , update , delete


ตัวอย่างการใช้งาน prepare , bindParam , execute

$conn = new PDO("mysql:host=localhost; dbname=webboard", "user", "pass");
$q = $conn->prepare("SELECT * FROM member WHERE member_id = ?"); 
$q->bindParam(1, $memberid, PDO::PARAM_INT);
$result = $q->execute();






ตัวอย่างการ FetchAll(STYLE)

$conn = new PDO("mysql:host=localhost; dbname=webboard", "user", "pass");
$q = $conn->prepare("SELECT * FROM member WHERE m_username = ? AND m_password = ? ");
$q->bindParam(1, $username);
$q->bindParam(2, $password);
$result = $q->execute();
$data = $result->fetchAll(style);      // นำ result ไปใช้งานต่อ
print_r($result);




การแสดงผลลัพธ์โดยการใช้ FetchAll ใน STYLE ต่างๆดังนี้

PDO::FETCH_NUM   :
return : array ,จัดลำดับอินเด็กซ์ของอะเรย์ = ตัวเลขเริ่มต้นที่ 0

output
Array ( 
[0] => Array ( 
[0] => 1 
[1] => ak1 
[2] => akone1 
[3] => 123456 
[4] => 123456 
[5] => 123456 
[6] => 123456 
[7] => 80000000 ) )



PDO::FETCH_ASSOC   :
return : array ,ใช้ชื่อคอลั่มเป็นอินเด็กซ์

output
Array ( [0] => Array 
( [m_id] => 1 
[m_profilename] => ak1 
[m_username] => akone1 
[m_password] => 123456 
[m_question] => 123456 
[m_answer] => 123456 
[m_email] => 123456 
[m_phonenumber] => 80000000 ) )


PDO::FETCH_BOTH  :
return : array  = ใช้ทั้งตัวเลข , ลำดับของคอลั่มน์ และ ชื่อคอลั่มน์ เป็นอินเด็กซ์

output
Array ( [0] => Array ( 
[m_id] => 1 
[0] => 1 [m_profilename] => ak1 
[1] => ak1 [m_username] => akone1 
[2] => akone1 [m_password] => 123456 
[3] => 123456 [m_question] => 123456 
[4] => 123456 [m_answer] => 123456 
[5] => 123456 [m_email] => 123456 
[6] => 123456 [m_phonenumber] => 80000000 
[7] => 80000000 ) )


PDO::FETCH_OBJ  :
return : object  ใช้ชื่อคอลั่มเป็น Poperty

output : Array ( 
[0] => stdClass Object ( 
[m_id] => 1 [m_profilename] => ak1 
[m_username] => akone1 
[m_password] => 123456 
[m_question] => 123456 
[m_answer] => 123456 
[m_email] => 123456 
[m_phonenumber] => 80000000 ) )