วันอังคารที่ 27 ตุลาคม พ.ศ. 2558

mysqli

            mysqli ย่อมาจาก mysql improved หรือชุดคำสั่งสำหรับติดต่อ mysql server ที่พัฒนามากขึ้น โดยมีจุดที่ดีกว่า mysql ตรงที่


Object-oriented interface
เมื่อสั่งคำสั่งติดต่อกับ mysql หรือทำการ query ข้อมูล จะไม่ออกมาเป็นตัวแปรค่าผสม (mixed value) แล้วนะครับ จะได้เป็น object มาแทน และตัว object นี้จะสามารถใช้ method ในตัวมันได้เลย จึงทำให้การเขียนติดต่อกับ mysql หลายๆ server พร้อมกันง่ายขึ้น

Support non-blocking, asynchronous queries with mysqlnd
สนับสนุนการทำ query แบบ async เหมาะกับคำสั่ง INSERT , UPDATE หรือ DELETE โดยไม่จำเป็นต้องรอให้คำสั่งนั้นเสร็จก่อน สามารถทำคำสั่ง php ถัดไปได้เลย

Support for Prepared Statements
ว่ากันง่ายๆคือการเตรียมคำสั่ง query เอาไว้ที่ mysql server จากนั้นก็ทำการส่งแค่ค่าตัวแปรบางตัวไป call query บน server เหมาะกับการใช้คำสั่งซ้ำบ่อยๆ

Support for Multiple Statements
สนับสนุนการทำคำสั่งพร้อมๆกันหลายๆคำสั่ง

Support for Transactions
สนับสนุนการทำ Transactions

Enhanced debugging capabilities
ช่วยในการ debug code query ของ mysql มากขึ้น

Embedded server support
สนับสนุน Embedded server (มันคืออะไร อยากรู้เหมือนกันแฮะ) คัดลอกบางส่วนจากที่นี่

อีกทั้งฝั่ง php ประกาศแล้วว่า mysql จะถูก deprecated ใน version 5.5 และจะ removed ใน version ถัดไปด้วย
รวมถึงประสิทธิภาพโดยรวมของการใช้ mysqli แทน mysql จะดีขึ้นกว่าเดิม
เทียบคำสั่งระหว่าง mysql และ mysqli
// เชื่อมต่อฐานข้อมูล (connect)
$link = mysql_connect(“host”,”username”,”password”); // mysql
$db = new mysqli(“host”,”username”,”password”); // mysqli

// เลือกฐานข้อมูล (schema)
mysql_select_db(“database name”,$link); // mysql
$db->select_db(“database name”); // mysqli

// ส่งคำสั่ง (query)
$result = mysql_query(“STATEMENT”,$link); // mysql
$result = $db->query(“STATEMENT”); // mysqli

// แกะข้อมูล 1 แถว (fetch array)
$data = mysql_fetch_array($result); // mysql
$data = $result->fetch_array(); // mysqli

// แกะข้อมูลครบทุกแถว (fetch all array)
while ($row = mysql_fetch_array($result)){ } // mysql
while ($row = $result->fetch_array()){ } // mysqli

// หมายเลข id ที่แทรกข้อมูล (insert id)
$insert_id = mysql_insert_id($link); // mysql
$insert_id = $db->insert_id; // mysqli เก็บเป็นตัวแปร ไม่ได้สั่งผ่าน method

// จำนวนแถวที่มีการเปลี่ยนแปลง (affected rows)
$affected_rows = mysql_affected_rows($link); // mysql
$affected_rows = $db->affected_rows; // mysqli เก็บเป็นตัวแปร ไม่ได้สั่งผ่าน method

// จำนวนแถวที่ query มาได้ (number of rows)
$num_rows = mysql_num_rows($result); // mysql
$num_rows = $result->num_rows; // mysqli เก็บเป็นตัวแปร ไม่ได้สั่งผ่าน method

// Real escaped string
$esc_string = mysql_escape_string($string); // mysql
$esc_string = $db->escape_string($string); // mysqli

ไม่มีความคิดเห็น:

แสดงความคิดเห็น