ครั้งเมื่ออดีตตราบจนถึงปัจจุบัน 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 อย่างไรบ้าง
แอบมาดูในอนาตคของ 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 การฝึกฝนบ่อยๆจะทำให้เกิดความชำนาญ และความเชียวชาญที่เพิ่มขึ้นขอให้สนุกกับการเขียนโปรแกรมนะครับ

