mysqli ย่อมาจาก mysql improved หรือชุดคำสั่งสำหรับติดต่อ mysql server ที่พัฒนาให้ดีขึ้นกว่า mysql
ปล. และอีกอย่างในขณะนี้ฟังก์ชั่น MySQL ได้มีสถานะ deprecated ใน PHP5.5 แล้วครับ และจะ removed ใน version ถัดไปด้วยรวมถึงประสิทธิภาพโดยรวมของการใช้ mysqli แทน mysql จะดีขึ้นกว่าเดิม
ข้อดี
เรามาเริ่มกันเลยดีกว่าครับ พร้อมแล้ว ลุยยยยยยยยยยยยยยย!!!
พูดด้วยเรื่อง :: การเชื่อมต่อฐานข้อมูล
แบบที่ 1 :: สำหรับท่านที่คุ้นเคยกับ MySQL มันไม่ยากเลยเพียงแค่เติม i เช่น Mysql ก็เปลี่ยนเป็น Mysqli เป็นต้น
<?php
//MySQLi
$mysqli = mysqli_connect("localhost", "user", "password", "database_name");
$result = mysqli_query($mysqli, "SELECT 'ทดสอบ' AS _msg FROM DUAL");
$rows = mysqli_fetch_assoc($result);
echo $row['_msg'];
//MySQL
$mysql = mysql_connect("localhost", "user", "password", "database_name");
$result = mysql_query($mysql, "SELECT 'ทดสอบ' AS _msg FROM DUAL");
$rows = mysql_fetch_assoc($result);
echo $row['_msg'];
?>
*** ไม่แนะนำให้ใช้ชุดคำสั่งของ MySQL สำหรับนักพัฒนามือใหม่ ***
แบบที่ 2 :: Object-oriented and procedural interface หรือการเขียนแบบอ๊อบเจ็ค ออเรนจ์ เต็ด นั่นเองครับ
<?php
// วิธีที่ 1
$mysqli = mysqli_connect("localhost", "user", "password", "database_name");
if (mysqli_connect_errno($mysqli)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result= mysqli_query($mysqli, "SELECT 'ทดสอบ' AS _msg FROM DUAL");
$row = mysqli_fetch_assoc($result);
echo $row['_msg'];
// วิธีที่ 2
$mysqli = new mysqli("localhost", "user", "password", "database_name");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
}
$result= $mysqli->query("SELECT 'ทดสอบ' AS _msg FROM DUAL");
$row = $result->fetch_assoc();
echo $row['_msg'];
?>
แบบที่ 3 :: Bad coding style ไม่ค่อยเวิคนั่นเอง
<?php
$mysqli = new mysqli("localhost", "user", "password", "database_name");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
}
$res = mysqli_query($mysqli, SELECT 'ทดสอบ' AS _msg FROM DUAL");
if (!$res) {
echo "Failed to run query: (" . $mysqli->errno . ") " . $mysqli->error;
}
if ($row = $res->fetch_assoc()) {
echo $row['_msg'];
}
?>
*** รูปแบบที่เป็นไปได้ แต่ไม่ค่อยดีสักเท่าไหร่ ***
อ้างอิง :: http://th1.php.net/manual/en/mysqli.overview.php
config.php
<?php
//สร้าง object ของ class mysqli
$mysqli = new mysqli();
//ทำการเชื่อมต่อกับฐานข้อมูล โดยเราจำเป็นต้องใช้ @ operator เพื่อกัน PHP แสดง warning
//เพราะ mysqli::connect() จะทำให้เกิด PHP warning หากมี error
@$mysqli->connect ( 'localhost', // host
'root', //username
'1234', //password
'book_store' //default database
);
/*
แต่เราจะมาตรวจสอบ error ตรงนี้แทน
หากมี error ที่เกิดขึ้นระหว่างการเชื่อมต่อ เช่น username หรือ password ผิด
จะมี error message ส่งมาจาก MySQL Server โดยจะไปอยู่ใน mysqli::$connect_error
ก็ให้แสดง error message ที่ได้จาก MySQL Server และจบการทำงาน
*/
if ($mysqli->connect_error) {
$TITLE = $mysqli->connect_error;
//ให้ error message อยู่ในรูปแบบ #<error code> - <error message>
$FATAL_ERROR = "#{$mysqli->connect_errno} - {$mysqli->connect_error}";
echo $FATAL_ERROR;
}
//กำหนด charset สำหรับการเชื่อมต่อครั้งนี้ให้เป็น utf8
$mysqli->set_charset ( 'utf8' );
?>
เครดิต :: phpinfo()
เอาไว้ถ้าว่างเดี๋ยวจะมาต่อครับ ติดไว้ก่อน