PHP 5 และต่อมาสามารถทำงานร่วมกับฐานข้อมูล MySQL โดยใช้:
- ขยาย MySQLi (the "i" stands for improved)
- PDO (PHP Data Objects)
รุ่นก่อนหน้า PHP ใช้นามสกุลของ MySQL อย่างไรก็ตามส่วนขยายนี้ได้รับการยกเลิกในปี 2012
ฉันจึงควรใช้ MySQLi หรือ PDO?
หากคุณต้องการคำตอบสั้น ๆ ก็จะเป็น "Whatever you like"
ทั้งสอง MySQLi และ PDO มีข้อได้เปรียบของพวกเขา
PDO จะทำงานเมื่อวันที่ 12 ระบบฐานข้อมูลที่แตกต่างกันที่เป็น MySQLi จะทำงานร่วมกับฐานข้อมูล MySQL
ดังนั้นถ้าคุณต้องเปลี่ยนโครงการของคุณที่จะใช้ฐานข้อมูลอื่น PDO ทำให้กระบวนการง่าย คุณจะต้องเปลี่ยนสตริงการเชื่อมต่อและแบบสอบถามไม่กี่ ด้วย MySQLi คุณจะต้องเขียนรหัสทั้งหมด - คำสั่งรวม
ทั้งสองเป็นวัตถุ แต่ MySQLi มี API ขั้นตอน
ทั้งสนับสนุนงบเตรียม งบเตรียมป้องกันจากการฉีด SQL และมีความสำคัญมากสำหรับการรักษาความปลอดภัยโปรแกรมประยุกต์บนเว็บ
ตัวอย่าง MySQL ทั้งสอง MySQLi และ PDO ไวยากรณ์
ในนี้และในบทต่อไปนี้เราแสดงให้เห็นถึงวิธีที่สามของการทำงานกับ PHP และ MySQL:
- MySQLi (object-oriented)
- MySQLi (procedural)
- PDO
การติดตั้ง MySQLi
สำหรับ Linux และ Windows: นามสกุล MySQLi ติดตั้งโดยอัตโนมัติในกรณีส่วนใหญ่เมื่อแพคเกจข้อมูล mysql php5 มีการติดตั้ง
สำหรับรายละเอียดการติดตั้งไปที่: http://php.net/manual/en/mysqli.installation.php
การติดตั้ง PDO
สำหรับรายละเอียดการติดตั้งไปที่: http://php.net/manual/en/pdo.installation.php
เปิดการเชื่อมต่อไปยัง MySQL
ก่อนที่เราจะสามารถเข้าถึงข้อมูลในฐานข้อมูล MySQL, เราจะต้องมีความสามารถในการเชื่อมต่อกับเซิร์ฟเวอร์:
ตัวอย่าง (MySQLi Object-Oriented)
<?php
$servername = "localhost";
$username = "username";
$password =
"password";
// Create connection
$conn =
new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
หมายเหตุเกี่ยวกับตัวอย่างเชิงวัตถุดังกล่าวข้างต้น: $ connect_error เสียจน PHP 5.2.9 และ 5.3.0 ถ้าคุณต้องการเพื่อให้เข้ากันกับรุ่นก่อนที่จะ PHP 5.2.9 และ 5.3.0 ใช้รหัสต่อไปนี้แทน:
// ตรวจสอบการเชื่อม
ถ้า ( mysqli_connect_error() ) {
die("Database connection failed: " . mysqli_connect_error() );
}
ตัวอย่าง (MySQLi Procedural)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername,
$username, $password);
// Check connection
if (!$conn) {
die("Connection
failed: " . mysqli_connect_error());
}
echo "Connected
successfully";
?>
ตัวอย่าง (PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB",
$username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
echo "Connected
successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>
ขอให้สังเกตว่าในตัวอย่าง PDO ข้างต้นเราได้ระบุยังฐานข้อมูล (myDB) PDO จำเป็นต้องมีฐานข้อมูลที่ถูกต้องเพื่อเชื่อมต่อกับ ถ้าฐานข้อมูลไม่ได้ระบุยกเว้นจะโยน
เคล็ดลับ: ประโยชน์ที่ดีของ PDO คือว่ามันมีชั้นข้อยกเว้นที่จะจัดการกับปัญหาใด ๆ ที่อาจเกิดขึ้นในการสืบค้นฐานข้อมูลของเรา หากยกเว้นจะโยนภายในบล็อกลอง {} สคริปต์ที่จะหยุดการดำเนินการและไหลโดยตรงกับครั้งแรกที่ catch() {} บล็อก
ปิดการเชื่อมต่อ
การเชื่อมต่อจะถูกปิดโดยอัตโนมัติเมื่อสคริปต์จะสิ้นสุดลง การปิดการเชื่อมต่อก่อนที่จะใช้ต่อไปนี้:
ตัวอย่าง (MySQLi Object-Oriented)
$conn->close();
ตัวอย่าง (MySQLi Procedural)
mysqli_close($conn);
ตัวอย่าง (PDO)
$conn = null;