Sử dụng mysql extension (đã chấm dứt cải cách và phát triển và không được khuyên dùng) Sử dụng mysqli extension (cung ứng từ bỏ PHP 5 trlàm việc lên, là phiên phiên bản đổi mới của mysql extension) Sử dụng PDO (PHPhường Data Object)

 PDO là gì?

PDO (PHPhường Data Object) là một database abstraction layer, rất có thể thực hiện các extension khác nhau nhằm giao tiếp với các DataBase không giống nhau (Oracle, DB2, Microsoft Squốc lộ hệ thống, Postgress Squốc lộ..) .PDO có thể được áp dụng nhằm lập trình theo cả hướng thủ tục cùng theo hướng đối tượng người dùng.

Bạn đang xem: Pdo là gì

cach-su-dung-pdo-trong-php

Ứng với từng cơ sở dữ liệu không giống nhau PDO vẫn thực hiện những các loại driver khác biệt để thao tác với CSDL. Các lệnh Squốc lộ được truyền vào PDO sẽ tiến hành những driver này chuyển quý phái câu lệnh SQL tương xứng cùng với cơ sở dữ liệu đang rất được áp dụng. Chính do vậy khi thực hiện PDO chúng ta cũng có thể dễ dàng gửi sang 1 hệ quản trị CSDL khác cơ mà không nhất thiết phải viết lại mã.

Kết nối mang đến CSDL vào PDO


$dsn = "mysql:host=localhost;dbname=ten_csdl";// Set options$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);// Create a new PDO instanacetry $db = new PDO($dsn, "user_dang_nhap_csdl", "password_csdl", $options);// Catch any errorscatch (PDOException $e) emang lại $e->getMessage();exit();
 Để hoàn toàn có thể hiển thị tiếng việt Lúc thao tác làm việc cùng với CSDL MySquốc lộ chúng ta đề xuất chạy lệnh "SET NAMES utf8" lúc kết nối đến DataBase MySquốc lộ. Giá trị PDO::ERRMODE_EXCEPTION trong nằm trong tính PDO::ATTR_ERRMODE sẽ giúp đỡ PDO nỉm ra ngoại lệ Khi gặp mặt lỗi đồng thời tạo thành PHPhường warning. Tuy nhiên chúng ta cũng có thể sử dụng try catch để bắt lỗi nhằm bít giấu các thông báo lỗi.

Xem thêm: " Peace Out Là Gì ? Peace Out Nghĩa Là Gì

khi làm việc với CSDL trong PHP, so với các lệnh SQL có tmê mệt số động chúng ta tránh việc truyền câu lệnh Squốc lộ trực tiếp thông qua chuỗi thay vị vậy họ đề nghị áp dụng Prepared Statement nhằm rời bị tiến công Squốc lộ Injection.

Chèn dữ liệu vào CSDL thông qua PDO


//Khởi tạo thành Prepared Statement$stmt = $db->prepare("INSERT INTO users (name, email, age) values (:name, :mail, :age)");$stmt->bindParam(":name", "Nguyen Van A");$stmt->bindParam(":mail", "email_address");$stmt->bindParam("age", 22);$stmt->execute();/*****************Cách viết không giống *********************/$stmt = $db->prepare("INSERT INTO users (name, email, age)values (:name, :mail, :age)");$data = array("name"=>"Nguyen Van A", "mail"=>"email_address", "age"=> 22);$stmt->execute($data);
trước hết họ sẽ tạo một Prepared Statement thông qua hàm prepare(). Tại phía trên bọn họ không truyền quý hiếm trực tiếp mang đến name, mail với age. Ttuyệt vào kia họ đang áp dụng các place holder để lưu lại địa điểm cho quý giá của các biến đổi bên trên. Tiếp theo họ thực hiện đính quý giá cho những place holder vào câu lệnh Prepared Statement thông qua hàm bindParam($tên_place_holder, $giá_trị_của_place_holder). Cuối thuộc bọn họ tiến hành prepared statement trải qua lệnh execute().

Xem thêm: Harga Htc Butterfly 3 Murah Terbaru Dan Spesifikasi & Kecepatan

Truy vấn DataBase với PDO:

Lúc hiểu tài liệu trường đoản cú database, PDO đã trả về dữ liệu theo cấu tạo mảng (array) hoặc đối tượng người tiêu dùng (object) trải qua những cách làm sau:

fetchAll(): trả về một mảng chứa tất cả những mặt hàng trong tập kết quả trả về (result set). Một số giá trị phổ biến của fetch_mode: PDO::FETCH_BOTH (default): trả về dữ liệu dạng mảng với key là tên gọi của cột và cả số máy tự của cột. PDO::FETCH_ASSOC: trả về dữ liệu dạng mảng với key là tên gọi cột của bảng trong DataBase. PDO::FETCH_NUM: trả về dữ liệu dạng mảng với key là số sản phẩm công nghệ từ của cột. PDO::FETCH_OBJ: trả về một đối tượng người tiêu dùng của stdClass cùng với tên trực thuộc tính vào đối tượng người dùng là tên của cột. PDO::FETCH_CLASS: Gán giá trị của từng cột mang lại từng thuộc tính (property/attribute) của một lớp được chỉ định và hướng dẫn trước. fetch(): trả về hàng tiếp nối từ bỏ result set. fetchColumn( ): trả về 1 cực hiếm của cột được chỉ định và hướng dẫn vào hàng sau đó của result set.

ví dụ như truy vấn vấn dữ liệu với PDO


$stmt = $db->prepare("SELECT name, gmail, age from users");//Thiết lập đẳng cấp dữ liệu trả về$stmt->setFetchMode(PDO::FETCH_ASSOC);$stmt->execute();$resultSet = $stmt->fetchAll();/*Trong trường đúng theo chưa setFetchMode() chúng ta cũng có thể sử dụng$resultSet = $stmt->fetchAll(PDO::FETCH_ASSOC);*/foreach ($resultSet as $row) eđến $row<"name"> . " ";eđến $row<"email"> . " ";emang lại $row<"age"> . " ";
Do dữ liệu đem về thông qua FETCH_ASSOC là tài liệu bên dưới dạng mảng 2 chiều đề xuất chúng ta vẫn sử dụng vòng lặp for để coi xét qua từng mặt hàng và lấy ra quý giá của từng phần tử trải qua thương hiệu của cột phía bên trong CSDL.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *