Bài 7: PDO trong PHP

  1. Introduction
  • PDO là gì?

PDO là API cung cấp cho chúng ta để kết nối cũng như thao tác với CSDL, chuyển dữ liệu thành các đối tượng để chúng ta dễ thao tác. Hiện tai PDO hỗ trợ khoảng 12 loại hệ quản trị CSDL khác nhau, không giống như mysqli chỉ hỗ trợ MySQL. PDO ra đời đã làm cho PHP đã mạnh lại càng trở nên mạnh mẽ hơn.

  • So sánh với mysql_ và mysqli
  ext/mysqli PDO_MySQL ext/mysql
Hỗ trợ PHP version 5.0 5.1 2.0
Có trong PHP 5.x
Trạng thái phát triển Tiếp tục Tiếp tục Chỉ bảo trì
Vòng đời Tiếp tục Tiếp tục Không tiếp tục
Khuyến cáo sử dụng cho dự án mới Không
Hỗ trợ OOP Không
Hỗ trợ lập trình thủ tục Không
Hỗ trợ lập trình bất đồng bộ với mysqlnd Không Không
Hỗ trợ kết nối liên tục (persistent connection)
Hỗ trợ các bảng mã ký tự khác nhau
Hỗ trợ Prepared Statements ở phía server Không
Hỗ trợ Prepared Statements ở phía client Không Không
Hỗ trợ Stored Procedures Không
Hỗ trợ thực thi nhiều câu lệnh Phần lớn Không
Hỗ trợ transactions Không
Hỗ trợ tất cả các tính năng của MySQL 5.1+ Phần lớn Ko

 

  1. Install & Config

PDO chỉ xuất hiện trong PHP từ ver 5 chấm trở đi, vì vậy nếu như server của các bạn chỉ support dưới 5 chấm, hãy chịu khó update lên 5 chấm.

Sau khi cài đặt xong, chúng ta phải mở cái php.ini và enable thư viện này (nếu chưa có) cùng các trình điều khiển tới các CSDL liên quan.

VD dưới đây là dòng lệnh cấu hình trình điều khiển CSDL chạy trên Windows:

 

  1. Các thao tác cơ bản

Trong các bài viết sau đây chúng ta chỉ sử dụng PDO để thao tác với CSDL MySQL, các thao tác với các hệ quản trị CSDL khác gần như là giống nhau.

  • Kết nối cơ sở dữ liệu

Bạn chỉ cần chỉ định cho PDO chuỗi kết nối cũng như account là có thể kết nối đến CSDL rồi, ví dụ sau đây thể hiện một số kết nối đến các hệ quản trị CSDL khác nhau:

 

 

  • Lấy dữ liệu từ một bảng

 

 

Rất dễ dàng phải không, chúng ta có fetchAll là lấy nhiều dòng, để lấy một dòng chúng ta chỉ cần fetch, PDO::FETCH_OBJ là đưa dữ liệu ra thành các object, những object có dạng $obj->ten_cot…

PDO::FETCH_ASSOC: Trả về dữ liệu dạng mảng với key là tên của column (column của các table trong database)

PDO::FETCH_BOTH (default): Trả về dữ liệu dạng mảng với key là tên của column và cả số thứ tự của column

PDO::FETCH_BOUND: Gán giá trị của từng column cho từng biến đã khởi tạo trước đó qua phương thức bindColumn()

PDO::FETCH_CLASS: Gán giá trị của từng column cho từng thuộc tính (property/attribute) của một lớp Class theo tên column và tên thuộc tính.

PDO::FETCH_INTO: Gán giá trị của từng column cho từng thuộc tính của một Class Instance (thể hiện của một lớp)

PDO::FETCH_LAZY: Gộp chung PDO::FETCH_BOTH/PDO::FETCH_OBJ

PDO::FETCH_NUM: Trả về dữ liệu dạng mảng với key là số thứ tự của column

PDO::FETCH_OBJ: Trả về một Object của stdClass với tên thuộc tính của Object là tên của column.

 

  • Lấy dữ liệu có điều kiện

 

 

Như các bạn thấy, các câu lệnh lấy dữ liệu đều được prepare và execute cùng param, các bạn hãy làm theo như thế này để tránh các lỗi không đáng có nhé. Việc prepare, chúng ta chỉ cần thay giá trị của chúng ta bằng một chuỗi :abc gì đó, sau đó truyền vào một mảng có các giá trị để thay thế cái chuỗi trên, thật dễ phải không.

Ngoài cách đưa vào một array như trên chúng ta cũng có thể làm như sau:

 

 

Tức là binding từng param một, nếu có nhiều param các bạn viết nhiều dòng bindParam.

 

  • Insert

 

  • Update

 

 

  • Delete

 

 

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">