Mẹo Hướng dẫn Hướng dẫn dùng fetch trong PHP 2022 Chi Tiết

Quý khách đang tìm kiếm từ khóa Hướng dẫn dùng fetch trong PHP 2022 được Cập Nhật vào lúc : 2022-09-02 22:20:00 . Với phương châm chia sẻ Kinh Nghiệm về trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi tìm hiểu thêm nội dung bài viết vẫn ko hiểu thì hoàn toàn có thể lại phản hồi ở cuối bài để Admin lý giải và hướng dẫn lại nha.

Thủ Thuật về Hướng dẫn dùng fetch trong PHP Mới Nhất

Bạn đang tìm kiếm từ khóa Hướng dẫn dùng fetch trong PHP được Update vào lúc : 2022-09-02 22:20:05 . Với phương châm chia sẻ Mẹo về trong nội dung nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi tìm hiểu thêm Post vẫn ko hiểu thì hoàn toàn hoàn toàn có thể lại Comments ở cuối bài để Ad lý giải và hướng dẫn lại nha.

Nếu bạn là một PHP Developer, chắc như đinh là bạn đã rất quen thuộc với việc truy xuất Database (Cơ sở tài liệu) bằng những extensions MySQL và MySQLi. Từ PHP 5.1 ta có một phương pháp tối ưu hơn đó là sử dụng PHP Data Objects. PDO phục vụ những cơ chế Prepared Statements, Stored Procedures và giúp bạn thao tác với database thông qua những Object (đối tượng người dùng người tiêu dùng) làm cho việc làm trở nên hiệu suất cao, thuận tiện và đơn thuần và giản dị hơn.

So sánh PDO và MySQLi

PDOMySQLiDatabase tương hỗ

Hơn 12 loại

Chỉ tương hỗ MySQL

API

Hướng đối tượng người dùng người tiêu dùng (OOP)

Hướng đối tượng người dùng người tiêu dùng (OOP) – Hướng thủ tục (Procedural)

Kết nối Database

Dễ dàng

Dễ dàng

Đặt tên tham số

Không

Object Mapping

Prepared Statements

Không

Hiệu năng

Cao

Cao

Stored Procedures

1. Giới thiệu PDO – PHP Data Objects

PHP Data Objects (PDO) là một lớp truy xuất cơ sở tài liệu phục vụ một phương pháp thống nhất để thao tác với nhiều loại cơ sở tài liệu rất rất khác nhau. Khi thao tác với PDO bạn sẽ tránh việc phải viết những câu lệnh SQL rõ ràng mà chỉ sử dụng những phương thức mà PDO phục vụ, giúp tiết kiệm chi phí ngân sách thời hạn và làm cho việc quy đổi Hệ quản trị cơ sở tài liệu trở nên thuận tiện và đơn thuần và giản dị hơn, chỉ đơn thuần và giản dị là thay đổi Connection String

(chuỗi link CSDL).

Bạn chỉ việc nắm vững API mà PDO phục vụ là hoàn toàn hoàn toàn có thể thao tác được với nhiều Hệ quản trị cơ sở tài liệu rất rất khác nhau như MySQL, SQLite, PostgreSQL, Microsoft SQL Server,… và hoàn toàn hoàn toàn có thể thuận tiện và đơn thuần và giản dị quy đổi chúng.

Các Hệ quản trị cơ sở tài liệu (Database Management System) mà PDO tương hỗ gồm có:

Tên driverDBMSPDO_CUBRID

Cubrid

PDO_DBLIB FreeTDS

Microsoft SQL Server / Sybase

PDO_FIREBIRD

Firebird

PDO_IBM

IBM DB2

PDO_INFORMIX

IBM Informix Dynamic Server

PDO_MYSQL

MySQL 3.x/4.x/5.x

PDO_OCI

Oracle Call Interface

PDO_ODBC

ODBC v3 (IBM DB2, unixODBC and win32 ODBC)

PDO_PGSQL

PostgreSQL

PDO_SQLITE

SQLite 3 and SQLite 2

PDO_SQLSRV

Microsoft SQL Server / SQL Azure

PDO_4D

4D

2. Kết nối cơ sở tài liệu

Mỗi DBMS sẽ đã có được những phương thức link rất rất khác nhau (có loại cần Username, Password, đường dẫn đới Database, Port, có loại không). Connection String của những DBMS phổ cập hầu hết đều phải có dạng như sau:

$conn = new PDO(‘mysql:host=localhost;dbname=izlearn’, $username, $password);

Với mysql là tên thường gọi thường gọi của DBMS, localhost có ý nghĩa database được đặt trên cùng server, izlearn là tên thường gọi thường gọi của database. $username và $password là 2 biến chứa thông tin xác thực.

Đối với SQLite, DBMS này sẽ không còn hề còn cơ

chế xác thực bằng Username và Password mà chỉ đơn thuần và giản dị là đường dẫn tới file tài liệu:

$conn = new PDO(“sqlite:your/database/path/izlearn.db”);

Đây là lúc để bạn quên đi Connection String lỗi thời mysql_connect(‘localhost’, ‘username’, ‘password’) or die(‘Could not connect: ‘ . mysql_error()); Hiện vẫn còn đấy đấy thật nhiều nội dung nội dung bài viết ở Việt Nam hướng dẫn người mới sử dụng cách link CSDL dạng này vì họ nhận định rằng nó đơn thuần và giản dị. Thực ra họ chỉ đang dẫn bạn đi về quá khứ mà thôi. Đế ngắt link lúc không cần thao tác với database nữa, những bạn chỉ việc

sét biến $conn về null;

$conn = null;

3. Insert và Update

Thêm mới (insert) và update (update) tài liệu là những hoạt động và sinh hoạt giải trí và sinh hoạt vui chơi cơ bản khi thao tác với database. Với PDO, mỗi hoạt động và sinh hoạt giải trí và sinh hoạt vui chơi insert hay update được thực thi qua 3 quy trình sử dụng cơ chế Prepared Statement

    Prepare statement: Chuẩn bị một câu lệnh SQL làm khung/mẫu được gọi là Prepared Statement với những Placeholder (hoàn toàn hoàn toàn có thể hiểu placeholder đóng vai trò như tham số của những phương thức khi bạn khai báo hàm)
    Bind params: Gắn giá trị thực vào những placeholder (tương tự như khi bạn truyền giá trị vào những tham số của phương thức)
    Execute: Thực thi câu lệnh.

Prepared Statement

Có 2 loại Placeholder trong Prepared Statement là Placeholder không định danh (Unnamed Placeholder) và Placeholder định danh (Named Placeholder) như ví dụ sau:

$stmt = $conn->prepare(‘INSERT INTO users (name, email, age) values (?, ?, ?)’);

$stmt = $conn->prepare(‘INSERT INTO users (name, email, age) values (:name, :mail, :age)’);

Dòng lệnh thứ nhất sử dụng Placeholder không định danh là những dấu hỏi – ?. Dòng lệnh thứ hai sử dụng Placeholder

định danh: :name, :mail, :age (lưu ý dấu hai chấm và placeholder không nhất thiết phải giống tên column). Sau đấy là toàn bộ quy trình Insert và Update sử dụng 2 loại Placeholder nêu trên.

Unnamed Placeholder

//Khởi tạo Prepared Statement từ biến $conn ở phần trước

$stmt = $conn->prepare(‘INSERT INTO users (name, email, age) values (?, ?, ?)’);

//Gán những biến (thời hạn lúc bấy giờ chưa mang giá trị) vào những placeholder theo thứ tự tương ứng

$stmt->bindParam(1, $name);

$stmt->bindParam(2, $mail);

$stmt->bindParam(3, $age);

//Gán giá trị và thực thi

$name = “Vu Hoang Lam”<

$mail = “[email protected]”;

$age = 22;

$stmt->execute();

//Gán những giá trị khác và tiếp tục thực thi

$name = “Nguyen Van A”;

$mail = “[email protected]”;

$age = 23;

$stmt->execute();

Như những bạn thấy ta chỉ việc khởi tạo Prepared Statement một lần và hoàn toàn hoàn toàn có thể sử dụng lại nhiều lần. Với mỗi column – placeholder ta phải thực thi gán tham số một lần, điều này sẽ không còn hề sao với những table có ít column như ví dụ trên, nhưng sẽ rất phiền phức

nếu bảng có nhiều table, rất như mong ước ta có cách khác để thao tác này, đó là lưu toàn bộ giá trị vào trong một mảng và truyền mảng này vào phương thức execute(), rõ ràng như sau:

$stmt = $conn->prepare(‘INSERT INTO users (name, email, age) values (?, ?, ?)’);

$data = array(‘Vu Hoang Lam’, ‘[email protected]’, 22);

//Phương thức execute() dưới đây sẽ gán lần lượt giá trị trong mảng vào những Placeholder theo thứ tự

$stmt->execute($data);

Named Placeholder

Đối với Named Placeholder, cách thực lúc bấy giờ cũng rất tương tự với Unnamed Placeholder, chỉ khác là ta không dùng thứ tự placeholder để gán giá trị (bind) mà dùng chính tên của placeholder:

//Khởi tạo Prepared Statement từ biến $conn ở phần trước

$stmt = $conn->prepare(‘INSERT INTO users (name, email, age) values (:name, :mail, :age)’);

//Gán những biến (thời hạn lúc bấy giờ chưa mang giá trị) vào những placeholder theo tên của chúng

$stmt->bindParam(‘:name’, $name);

$stmt->bindParam(‘:mail’, $mail);

$stmt->bindParam(‘:age’, $age);

//Gán giá trị và thực thi

$name = “Vu Hoang Lam”;

$mail = “[email protected]”;

$age = 22;

$stmt->execute();

Các bạn cũng hoàn toàn hoàn toàn có thể sử dụng mảng để rút gọn:

//Lưu ý: Không thiết yếu phải sử dụng dấu hai chấm cho những key

$data = array(‘name’ => ‘Vu Hoang Lam’, ‘mail’ => ‘[email protected]’, ‘age’ => 22);

Một mẹo hữu ích khác khi sử dụng Named Placeholder đó là insert Object

class $user

public $name;

public $mail;

public $age;

$person = new $user();

$person->name = ‘Vu Hoang Lam’;

$person->mail = ‘[email protected]’;

$person->age = 22;

$stmt = $conn->prepare(‘INSERT INTO users (name, email, age) values (:name, :mail, :age)’);

$stmt->execute((array)$person);

Ở dòng

ở đầu cuối, tôi đã thực thi “ép kiểu” (cast) Object $person thành array để truyền vào phương thức execute();

Việc sử dụng Prepared Statement sẽ tương hỗ bạn tránh khỏi SQL Injection, tôi sẽ đi sâu lý giải yếu tố này trong một nội dung nội dung bài viết khác.

4. Select Data – “Đọc” tài liệu từ database

Khi đọc tài liệu từ database, PDO sẽ trả về tài liệu theo cấu trúc mảng (array) hoặc đối tượng người dùng người tiêu dùng (object) thông qua phương thức fetch(). Bạn nên thiết lập trước cấu trúc tài liệu trước

khi gọi phương thức này, PDO tương hỗ những tuỳ chọn sau:

Trong thực tiễn, toàn bộ toàn bộ chúng ta chỉ thường dùng 3 kiểu

fetch đó là: FETCH_ASSOC, FETCH_CLASS và FETCH_OBJ. Để thiết lập cấu trúc tài liệu (Fetch Style hay Fetch Mode) trước lúc fetch ta dùng câu lệnh sau:

$stmt->setFetchMode(PDO::FETCH_ASSOC);

Hoặc nếu muốn bạn cũng hoàn toàn hoàn toàn có thể thiết lập kiểu fetch khi gọi hàm fetch():

$stmt->fetch(PDO::FETCH_ASSOC);

FETCH_ASSOC

Kiểu fetch này sẽ tạo ra một mảng phối hợp lập chỉ mục theo tên column (nghĩa là những key của mảng đó đó là tên thường gọi thường gọi của column), tương tự như khi ta dùng MySQL/MySQLi Extension.

//Tạo Prepared Statement

$stmt = $conn->prepare(‘SELECT email, age from users WHERE name = :name’);

//Thiết lập kiểu tài liệu trả về

$stmt->setFetchMode(PDO::FETCH_ASSOC);

//Gán giá trị và thực thi

$stmt->execute(array(‘name’ => ‘a’));

//Hiển thị kết quả, vòng lặp sau này sẽ tạm ngưng khi đã duyệt qua toàn bộ kết quả

while($row = $stmt->fetch())

echo $row[‘name’] , ‘n’;

echo $row[’email’] , ‘n’;

echo $row[‘age’] , ‘n’;

FETCH_OBJ

Kiểu

fetch này trả về một Object của stdClass cho từng row của kết quả.

//Tạo Prepared Statement

$stmt = $conn->prepare(‘SELECT email, age from users WHERE name = :name’);

//Thiết lập kiểu tài liệu trả về

$stmt->setFetchMode(PDO::FETCH_OBJ);

//Gán giá trị và thực thi

$stmt->execute(array(‘name’ => ‘a’));

//Hiển thị kết quả, vòng lặp sau này sẽ tạm ngưng khi đã duyệt qua toàn bộ kết quả trả về

while($row = $stmt->fetch())

echo $row->name , ‘n’;

echo $row->email , ‘n’;

echo $row->age , ‘n’;

FETCH_CLASS

Kiểu fetch này được được cho phép bạn đưa kết quả vào Object của một Class mà bạn chỉ định. Khi sử dụng FETCH_CLASS, thuộc tính của class sẽ tiến hành gán giá trị trước lúc constructor của class này được gọi (phải để ý quan tâm vì điều này rất quan trọng). Nếu không hề thuộc tính khớp với tên của một column bất kỳ thì thuộc tính này sẽ tiến hành tự động hóa hóa tạo ra (public).

Giả sử table users có một ta đã có

Class User được định nghĩa như sau:

class User

public $name;

public $email;

public $isAdmin = ‘No’;

function __construct()

if ($this->name == ‘Vu Hoang Lam’)

$this->isAdmin = ‘Yes’;

Khi query data từ database sử dụng đoạn code sau:

//Tạo Prepared Statement

$stmt = $conn->prepare(‘SELECT email, age from users WHERE name = :name’);

//Thiết lập kiểu tài liệu trả về, chỉ định tài liệu được đưa vào object của class User

$stmt->setFetchMode(PDO::FETCH_CLASS, ‘User’);

//Gán giá trị và thực thi

$stmt->execute(array(‘name’ => ‘a’));

//Hiển thị kết quả, vòng lặp sau này sẽ tạm ngưng khi đã duyệt qua toàn bộ kết quả trả về

while($obj = $stmt->fetch())

echo $obj->email;

echo $obj->isAdmin;

Vì constructor được gọi sau khi thuộc tính $name được gán bằng Vu Hoang Lam nên isAdmin sẽ mang giá trị Yes. Nếu muốn constructor của class được gọi trước lúc những thuộc tính được gán giá trị, bạn phải sử dụng thêm PDO::FETCH_PROPS_LATE. Cách sử dụng như sau:

//Hãy thử sử dụng kiểu fetch trên và so sánh kết quả hiển thị

$stmt->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, ‘User’);

Nếu cần truyền những tham số cho constructor của class thông qua phương thức fetch(), những bạn hoàn toàn hoàn toàn có thể đặt nó trong

một array theo thứ tự tương ứng rõ ràng như sau:

$stmt->setFetchMode(PDO::FETCH_CLASS, ‘User’, array(‘param1’, ‘param2’, ‘param3’));

Exceptions – Xử lý ngoại lệ

PDO dùng những Exceptions để xử lý những lỗi phát sinh khi thao tác với database, vì thế toàn bộ những gì bạn làm với PDO nên được đặt trong một try/catch block. PDO phục vụ 3 chủ trương xử lý lỗi (Error Mode) được thiết lập thông qua phương thức setAttribute():

$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );

$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );

$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

PDO::ERRMODE_SILENT

Đây là chủ trương xử lý lỗi mặc định của PDO, khi gặp mỗt lỗi bất kỳ, PDO sẽ im

lặng (silent) và chương trình vẫn tiếp tục chạy. Bạn hoàn toàn hoàn toàn có thể lấy mã lỗi và thông tin về những lỗi đã xẩy ra qua PDO::errorCode() và PDO::errorInfo()

PDO::ERRMODE_WARNING

Ở chủ trương này khi gặp phải lỗi PDO sẽ ném ra một PHP Warning, chương trình sẽ tiếp tục chạy.

PDO::ERRMODE_EXCEPTION

Đây là mode mà bạn nên sử dụng nhất, khi để trong một try/catch block sẽ tương hỗ bạn trấn áp những lỗi phát sinh một cách uyển chuyển và giấu những thông báo lỗi có

thể khiến Attacker khai thác khối mạng lưới khối mạng lưới hệ thống của bạn.

try

$stmt = new PDO(‘mysql:host=localhost;dbname=izlearn’, ‘lamvh’, ‘talapassday’);

$stmt->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

//Sai cú pháp, FORM thay vì FROM

$stmt->prepare(‘SELECT name FORM people’);

catch(PDOException $e)

echo “ERROR! Co loi xay ra voi PDO”;

file_put_contents(‘PDOErrors.txt’, $e->getMessage(), FILE_APPEND);

Đoạn code trên sẽ ghi thông báo lỗi vào một trong những trong những file text với tên PDOErrors.txt

Một số phương thức hữu ích khác

$conn->lastInsertId();

Phương thức trên trả về Auto Incremented ID của rows được thêm sớm nhất.

$conn->exec(‘DELETE FROM users WHERE uid = 1’);

Đối với những lệnh SQL không hề tài liệu trả về, và không thiết yếu phải truyền tham số thì hoàn toàn hoàn toàn có thể sử dụng phương thức exec(). Phương thức này sẽ trả về số lượng row bị tác động sau khi thực thi câu lệnh. Như ví

dụ trên sẽ trả về số lượng row bị xoá.

$conn = $DBH->quote($foo);

Phương thức quote() sẽ tương hỗ bạn thêm dấu nháy cho một string để string đó bảo vệ bảo vệ an toàn và uy tín và uy tín khi sử dụng để truy vấn, nếu bạn không thích sử dụng Prepared Statement.

$stmt->rowCount();

Phương thức rowCount() trả về số lượng row bị tác động sau khi thực thi những thao tác DELETE, INSERT và UPDATE. Dùng rowCount() cho thao tác SELECT hoàn toàn hoàn toàn có thể sẽ trả về kết quả không đúng với một số trong những trong những loại database.

Tham khảo:

://.izlearn/

Tải thêm tài liệu liên quan đến nội dung nội dung bài viết Hướng dẫn dùng fetch trong PHP

Reply
4
0
Chia sẻ

Share Link Cập nhật Hướng dẫn dùng fetch trong PHP miễn phí

Bạn vừa Read nội dung nội dung bài viết Với Một số hướng dẫn một cách rõ ràng hơn về Review Hướng dẫn dùng fetch trong PHP tiên tiến và phát triển và tăng trưởng nhất Share Link Down Hướng dẫn dùng fetch trong PHP miễn phí.

Giải đáp vướng mắc về Hướng dẫn dùng fetch trong PHP

Nếu sau khi đọc nội dung nội dung bài viết Hướng dẫn dùng fetch trong PHP vẫn chưa hiểu thì hoàn toàn hoàn toàn có thể lại phản hồi ở cuối bài để Admin lý giải và hướng dẫn lại nha

#Hướng #dẫn #dùng #fetch #trong #PHP

Related posts:

4348

Clip Hướng dẫn dùng fetch trong PHP 2022 ?

Bạn vừa đọc tài liệu Với Một số hướng dẫn một cách rõ ràng hơn về Clip Hướng dẫn dùng fetch trong PHP 2022 tiên tiến và phát triển nhất

Chia Sẻ Link Cập nhật Hướng dẫn dùng fetch trong PHP 2022 miễn phí

Heros đang tìm một số trong những Chia SẻLink Tải Hướng dẫn dùng fetch trong PHP 2022 Free.

Thảo Luận vướng mắc về Hướng dẫn dùng fetch trong PHP 2022

Nếu sau khi đọc nội dung bài viết Hướng dẫn dùng fetch trong PHP 2022 vẫn chưa hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Admin lý giải và hướng dẫn lại nha
#Hướng #dẫn #dùng #fetch #trong #PHP