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