PHP การเชื่อมต่อฐานข้อมูลแบบ PDO

Sharing is caring!

logo_pdo

ครั้งเมื่ออดีตตราบจนถึงปัจจุบัน PHP Programming Language ก็มีการพัฒนาอยู่ตลอดเวลาจนปัจุบันก็อยู่ที่ เวอร์ชัน 5.6 แต่ยังไม่ได้รับความนิยมเทียบเท่าเวอร์ชัน 5.4 กับ 5.5 ก็จะยังมีผู้ใช้งานเยอะกว่า (ถ้าอยากจะอัพเกรดครั้งนี้ก็คงจะไปเวอร์ชั่น 7) แต่ถ้าถามว่า Hosting ในไทย ที่สนันสนุนเวอร์ชั่น 5.4, 5.5, 5.6 อาจจะยังมีน้อย




เรื่องการสนันสนุนปรับปรุงภาษาทีมพัฒนาเขายังสนันสนุนเวอร์ชั่น 5.4, 5.5, 5.6 ต่อไป แต่จะเลิกสนันสนุน เวอร์ชั่น 5.3 อย่างเต็มตัวข้อดีที่สำคัญของเวอร์ชัน 5.6 พัฒนาปรับปรุงเรื่องความปลอดภัยให้ดีขึ้น มาดูทางทีมพัฒนากันเขามีแผนการพัฒนา สนันสนุน PHP อย่างไรบ้าง

SUPPORT_PHP

 

แอบมาดูในอนาตคของ PHP 7 ในอนาคตว่ามีอะไรเพิ่มมาบ้าง

  • แน่นอนเรื่องความเร็วต้องเร็วกว่า PHP 5.6 แน่นอน
  • สนันการทำงานของเครื่อง 64 bit
  • กำจัดข้อผิดพลาดต่างๆ ที่มีใน PHP เวอร์ชั่น 5
  • ยกเลิก SAPIs and extensions (พวก php_mysql extension) จะไม่มีอีกต่อไป
  • เพิ่ม  Syntaxes  ?? , <=>, Group use (อันนี้ต้องมาดูกันจริงแล้วจะเอาไว้ใช้แบบใดกันแน่)

 

แล้วถ้า PHP เวอร์ชั่น 5.5 ขึ้นไป รวม PHP 7 ที่กำลังจะมาจะไม่มี php_mysql extension แล้วละพวกเราจะทำอย่างไร

ซึ่งปัญหานี้มีทางออกแล้วทางทีมพัฒนาก็แนะนำให้หันมาใช้ PDO หรือไม่ก็ mysqli จะมาแก้ปัญหานี้

The PDO class คืออะไร

pdo เป็น class extension เสริมที่ทางทีมพัฒนา PHP เขาสร้างขึ้นมาเพื่อช่วยเหล่านักพัฒนาให้ทำงานได้อย่างเป็นระบบ และมีความปลอดภัยมากขึ้น มีหน้าที่เชื่อมต่อระหว่าง PHP และเซิร์ฟเวอร์ฐานข้อมูล ให้มีการทำงานเป็นลักษณะ Object ซึ่ง PHP ก็รองรับการเขียนโปรแกรมแบบ Object มากยิ่งขึ้น และนอกจากนั้นจำทำให้เราพัฒนาตัวเองให้สามารถเขียนโปรแกรมในระดับที่สูงขึ้นได้เช่นกัน

สรุปฟังก์ชันการทำงาน

PDO {
public __construct ( string $dsn [, string $username [, string $password [, array $options]]] )
public bool beginTransaction ( void )
public bool commit ( void )
public mixed errorCode ( void )
public array errorInfo ( void )
public int exec ( string $statement )
public mixed getAttribute ( int $attribute )
public static array getAvailableDrivers ( void )
public bool inTransaction ( void )
public string lastInsertId ([ string $name = NULL ] )
public PDOStatement prepare ( string $statement [, array $driver_options = array() ] )
public PDOStatement query ( string $statement )
public string quote ( string $string [, int $parameter_type = PDO::PARAM_STR ] )
public bool rollBack ( void )
public bool setAttribute ( int $attribute , mixed $value )

}




ตารางการเปรียบเทียบ

การทำงาน รูปแบบ ตัวอย่าง
เชื่อมต่อฐานข้อมูล php_mysql
$link = mysql_connect('localhost', 'user', 'pass');
mysql_select_db('testdb', $link);
mysql_set_charset('UTF-8', $link);
pdo
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
เพิ่มข้อมูล php_mysql
$result = mysql_query("INSERT INTO table (col1,col2) VALUES ($alue1,$value2));
pdo
$stmt = $db->prepare("INSERT INTO table (col1,col2) VALUES (:value1,:value2)");
$stmt->bindValue(':value1', $value1, PDO::PARAM_STR);
$stmt->bindValue(':value2', $value2, PDO::PARAM_STR);
$stmt->execute();
แก้ไขข้อมูล php_mysql
$result = mysql_query("UPDATE table SET col1 = $value1 WHERE id = $id");
pdo
$stmt = $db->prepare("UPDATE table SET col1 =:value1 WHERE id =:id");
$stmt->bindValue(':value1', $value1, PDO::PARAM_STR);
$stmt->bindValue(':id', $id, PDO::PARAM_STR);
$stmt->execute();
ลบข้อมูล php_mysql
$result = mysql_query("DELETE FROM table WHERE id =".$id);
การคิวรี่ข้อมูล php_mysql
$result = mysql_query("SELECT col1, col2, col3 FROM table_name");
while($row = mysql_fetch_assoc($result)) {
//Process each row here
}
 pdo
$sth = $pdo->prepare("SELECT col1, col2, col3 FROM table_name");
$sth->execute();
while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
//Process each row here
}
pdo
$stmt = $db->prepare("DELETE FROM table WHERE id=:id");
$stmt->bindValue(':id', $id, PDO::PARAM_STR);
$stmt->execute();
คิวรี่ข้อมูล php_mysql
$result = mysql_query("SELECT col1, col2, col3 FROM table_name");
while($row = mysql_fetch_assoc($result)) {
//Process each row here
}
pdo
$sth = $pdo->prepare("SELECT col1, col2, col3 FROM table_name");
$sth->execute();
while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
//Process each row here
}




นี่ก็คือตัวอย่างบางส่วนสำหรับการเปรียบเทียบการใช้งาน php_mysql กับ pdo การฝึกฝนบ่อยๆจะทำให้เกิดความชำนาญ และความเชียวชาญที่เพิ่มขึ้นขอให้สนุกกับการเขียนโปรแกรมนะครับ