XEM MỤC LỤC CÁC BÀI VIẾT PHP
PHP 5 và
các phiên bản sau này có thể làm việc với cơ sở dữ liệu MySQL qua 02 phương thức
sau:
·
Phần
mở rộng MySQLi (chữ "i" là viết tắt của chữ cải thiện - improved)
·
PDO
(các đối tượng dữ liệu PHP)
Các phiên bản
cũ (trước PHP5) dùng phần mở rộng MySQL . Tuy nhiên, phần mở rộng này đã ngưng
sử dụng từ năm 2012.
Nên dùng MySQLi hay PDO?
Câu trả lời
là "Thích gì dùng nấy".
Cả MySQLi và
PDO có những ưu điểm riêng:
PDO có thể
dùng với hơn 12 hệ cơ sở dữ liệu, trong khi MySQLi chỉ dùng với cơ sở dữ liệu
MySQL.
Vì vậy, nếu
bạn phải với PDO ta có thể chuyển đổi qua hệ cơ sở dữ liệu khác dễ dàng với việc
thay đổi connection string và vài
câu truy vấn. Với MySQLi, bạn phải viết lại hầu như toàn bộ mã các câu truy vấn
đi kèm.
Cả 02 đều
viết theo kiểu hướng đối tượng , nhưng MySQLi luôn yêu cầu phải có 01 procedural
API.
Cả 02 hỗ trợ
các câu lệnh cài đặt sẵn - Prepared Statements. Các câu lệnh này giúp tránh khỏi
SQL injection, và chúng rất quan trọng trong việc bảo mật ứng dụng web.
Các ví dụ MySQL theo cú pháp của MySQLi và PDO
Từ đây trở
về sau , chúng ta sẽ minh họa cả 03 cách thao tác trong các đoạn mã ví dụ:
·
MySQLi
(hướng đối tượng)
·
MySQLi
(thủ tục)
·
PDO
Cài đặt MySQLi
Dành cho
Linux và Windows: phần mở rộng MySQLi được tự động cài đặt trong hầu hết các
trường hợp , trong php5 gói mysql được
cài sẵn.
Liên kết hướng
dẫn cài đặt: http://php.net/manual/en/mysqli.installation.php
Cài đặt PDOMở 01 kết nối đến MySQL
Trước khi
chúng ta có thể truy cập dữ liệu của MySQL, chúng ta phải kết nối được đến máy
chủ:
Ví dụ (MySQLi hướng đối tượng)
<?php
$servername = "localhost";
$username = "root"; //sửa user name và pass máy chủ web của bạn
$password = "";
// Tạo kết nối
$conn = new mysqli($servername, $username, $password);
// Kiểm tra kết nối
if ($conn->connect_error) {
die("Kết nối thất bại: " . $conn->connect_error);
}
echo "Kết nối thành công!";
?>
PHP là 01 ngôn ngữ tuyệt vời và thông dụng!$servername = "localhost";
$username = "root"; //sửa user name và pass máy chủ web của bạn
$password = "";
// Tạo kết nối
$conn = new mysqli($servername, $username, $password);
// Kiểm tra kết nối
if ($conn->connect_error) {
die("Kết nối thất bại: " . $conn->connect_error);
}
echo "Kết nối thành công!";
?>
Các bạn chú ý ví dụ hướng đối tượng ở trên: dòng $connect_error sẽ bị lỗi nếu phiên bản
PHP cũ. Để đảm bảo tương thích nhiều phiên bản PHP ta sẽ thay thế bằng đoạn mã
sau:
// Kiểm tra kết nối
if (mysqli_connect_error()) {
die(" Kết nối cơ sở dữ liệu thất bại!: " . mysqli_connect_error());
}
// Kiểm tra kết nối
if (mysqli_connect_error()) {
die(" Kết nối cơ sở dữ liệu thất bại!: " . mysqli_connect_error());
}
Ví dụ (MySQLi thủ tục)
<?php
$servername =
"localhost";
$username = "root";
$password = "";
// Tạo kết nối
$conn =
mysqli_connect($servername, $username, $password);
// Kiểm tra kết
nối
if (!$conn) {
die("Kết nối thất bại!:
" . mysqli_connect_error());
}
echo " Kết nối thành công! ";
?>
Ví dụ (PDO)
<?php
$servername =
"localhost";
$username = "root";
$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 "Kết nối thành công3!";
}
catch(PDOException $e)
{
echo "Kết nối thất bại!: " .
$e->getMessage();
}
?>
Trước khi
làm các ví dụ này các bạn vào phpmyadmin-> Tạo 01 cơ sở dữ liệu tên là mydb (cách sử dụng phpMyADMIN các bạn
vào đây)
Riêng PDO đòi
hỏi khi kết nối phải chỉ rõ 01 cơ sở dữ liệu.
Mẹo: 01 lợi
thế tuyệt vời của PDO là có 01 lớp ngoại lệ (exception class) dùng xử lý bất kỳ
vấn đề có thể phát sinh khi truy vấn cơ sở dữ liệu. Nếu 01 ngoại lệ phát sinh
bên trong khối try{ } , đoạn mã sẽ dừng
thực thi và chuyển ngay đến thực thi khối catch(){
} trước tiên.
Đóng kết nối
Kết nối sẽ
tự động đóng khi hết đoạn mã. Để đóng kết nối trước , ta sử dụng đoạn mã sau:
Ví dụ (MySQLi hướng đối tượng)
$conn->close();
Ví dụ (MySQLi thủ tục)
mysqli_close($conn);
Ví dụ (PDO)
$conn = null;
Nếu vẫn
chưa rõ các bạn xem them video clip sau:
XEM MỤC LỤC CÁC BÀI VIẾT PHP
By #drM
Nguồn:
sưu tầm
Không có nhận xét nào:
Đăng nhận xét