Hướng dẫn new pdo mysql

Kết nối mysql dùng PDO tức là từ php, bạn thực hiện kết nối đến mysql bằng thư viện PDO – thư viện cho phép bạn thực hiện kết nối đến nhiều loại database khác nhau.

Chương trình PHP cung cấp cho bạn 3 thư viện để kết nối đến MYSQL. Đó là các thư viện MYSQL, MYSQLI, PDO . Thư viện MYSQL hiện đã lỗi thời và không còn dùng nữa. Thư viện MYSQLi có tốc độ cao trong khi PDO hỗ trợ bạn kết nối đến nhiều loại database. Bài biết này đề cập đến việc dùng PDO để kết nối. Còn sử dụng MYSQLi sẽ đề cập trong bài viết khác.

Để kết nối đến một database của mysql bằng pdo bạn thực hiện code theo gợi ý như sau:

Lệnh new PDO ở trên trả về đối tượng gọi là kết nối hay đối tượng connection. Đây chính là cầu nối từ trang php của bạn đến database. Thông qua đối tượng connection, bạn có thể gửi đế mysql các câu lệnh sql cần thực thi.

Lấy dữ liệu từ mysql qua pdo

Khi đã tạo kết nối được đến database, bạn cần thực thi hàm query trong đối tượng kết nối để lấy dữ liệu.

Chạy hàm query lấy dữ liệu

Để lấy dữ liệu từ mysql qua pdo, bạn dùng hàm query của đối tượng connection. Hàm này trả về một đối tượng chứa các dòng dữ liệu từ mysql.

$sql = "...";
 //Câu lệnh sql để lấy dữ liệu
$kq = $conn->query($sql); // $kq là đối tượng dữ liệu, chứa các dòng dữ liệu đổ về từ mysql

Chạy hàm fetch để trích trừng dòng dữ liệu thành array

Khi có được dữ liệu, bạn dùng hàm fetch để trích ra từng dòng dữ liệu (dòng được trích ra là một mảng) và hiện ra trang. Fetch nhiều lần để lấy nhiều dòng dữ liệu, mỗi lần gọi hàm fetch thì trích được một dòng.

Đếm số dòng dữ liệu lấy được từ database

Dùng hàm rowCount() trong đối tượng dữ liệu , bạn sẽ được số dòng dữ liệu.

$sql = "...";
$kq = $conn->query($sql); // $kq là đối tượng dữ liệu, chứa dữ liệu đổ về từ mysql
$sodong = $kq->rowCount(); //lấy số dòng dữ liệu

Ví dụ lấy dữ liệu từ database dùng pdo

Giả sử dữ liệu trong table theloai như sau:

Hướng dẫn new pdo mysql

Viết code lấy dữ liệu từ table theloai để hiện ra trang web, sắp xếp tăng dần theo thứ tự

query($sql);  // $kq là đối tượng chứa các dòng dữ liệu đổ về từ mysql

$row = $kq->fetch();  //trích 1 dòng vào biến $row, $row là 1 array mà các phần tử đánh theo chỉ số và theo key 
print_r($row);echo "
"; $row = $kq->fetch(PDO::FETCH_ASSOC); //trích 1 dòng vào biến $row, $row là 1 array mà các phần tử đánh theo key print_r($row); echo "
"; ?>
Hướng dẫn new pdo mysql
Hướng dẫn new pdo mysql

Chèn, sửa xóa dữ liệu trong mysql qua pdo

Để chèn lấy dữ liệu từ mysql qua pdo, bạn dùng hàm exec của đối tượng connection. Hàm này trả về 1 số nguyên cho biết số dòng trong table đã thay đổi. Ví dụ:

exec($sql);
?>

Lặp qua dữ liệu lấy từ database

Khi dùng hàm query, bạn sẽ được một đối tượng chứa các dòng dữ liệu từ database đổ về. Số lượng dữ liệu có thể rất nhiều, cho nên phải lặp để hiện hết các dòng ra trang. Cú pháp như sau:

foreach ($dulieutừdb as $motdong) {
   // hiện các biến trong mảng $motdong
}  

Ví dụ:

query($sql);  // $kq là đối tượng chứa các dòng dữ liệu đổ về từ mysql
echo "

Lấy được " , $kq->rowCount() , " dòng dữ liệu

"; foreach ($kq as $row) { echo "

", $row['TieuDe'], "

"; } ?>

Phân trang dữ liệu lấy từ database

Dữ liệu lấy từ db có thể rất nhiều, cho nên phải “cắt khúc” ra, tức phân trang để user dễ đọc. Giả sử bạn cho mỗi trang là 5 dòng, và user muốn xem trang nào thì sẽ cho biết qua biến pagenum trong địa chỉ của trang, vậy thì code như sau:

query($sql);  // $kq là đối tượng chứa các dòng dữ liệu đổ về từ mysql

foreach ($kq as $row) {
   echo "

", $row['TieuDe'], "

"; } ?>

Các bài liên quan bạn nên đọc: Ôn tập database trong lập trình php