Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; WP_MatchesMapRegex has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-includes/class-wp.php on line 632

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Translation_Entry has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-includes/pomo/entry.php on line 14

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; POMO_Reader has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-includes/pomo/streams.php on line 12

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; POMO_FileReader has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-includes/pomo/streams.php on line 120

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; POMO_StringReader has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-includes/pomo/streams.php on line 175

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; POMO_CachedFileReader has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-includes/pomo/streams.php on line 221

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; POMO_CachedIntFileReader has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-includes/pomo/streams.php on line 236

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; WP_Widget_Factory has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-includes/widgets.php on line 544

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzAdSense has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/easy-adsense-lite.php on line 38

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzAdsWidget has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/easy-adsense-lite.php on line 941

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzAdsSearch has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/easy-adsense-lite.php on line 1003

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzAdsLU has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/easy-adsense-lite.php on line 1078

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzBaseOption has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/EzOptions.php on line 22

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzCheckBox has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/EzOptions.php on line 174

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzRadioBox has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/EzOptions.php on line 199

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzSelect has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/EzOptions.php on line 250

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzMessage has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/EzOptions.php on line 294

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzHelpTag has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/EzOptions.php on line 313

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzHelpPopUp has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/EzOptions.php on line 328

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzTextArea has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/EzOptions.php on line 346

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzText has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/EzOptions.php on line 366

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzSubmit has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/EzOptions.php on line 385

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzColorPicker has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/EzOptions.php on line 409

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzOneTab has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/EzOptions.php on line 432

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; EzMiniTab has a deprecated constructor in /var/www/phpcoban.com/public_html/wp-content/plugins/easy-adsense-lite/EzOptions.php on line 476
Bài 7: PDO trong PHP - PHP Cơ Bản

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="">