PDO trong PHP với ví dụ là gì?

PHP PDO là lớp truy cập cơ sở dữ liệu cung cấp giao diện thống nhất để làm việc với nhiều cơ sở dữ liệu

PDO đơn giản hóa các hoạt động cơ sở dữ liệu phổ biến bao gồm

  • Tạo kết nối cơ sở dữ liệu
  • Thực hiện các truy vấn bằng cách sử dụng câu lệnh đã chuẩn bị
  • Gọi thủ tục lưu sẵn
  • Thực hiện giao dịch
  • Và xử lý lỗi

PDO cho phép bạn làm việc với bất kỳ cơ sở dữ liệu nào có sẵn trình điều khiển PDO. PDO dựa trên các trình điều khiển dành riêng cho cơ sở dữ liệu, e. g. , PDO_MYSQL cho MySQL, PDO_PGSQL cho PostgreSQL, PDO_OCI cho cơ sở dữ liệu Oracle, v.v. , để hoạt động đúng. Đây là danh sách đầy đủ các trình điều khiển PDO

Do đó, để sử dụng PDO cho một cơ sở dữ liệu cụ thể, bạn cần có sẵn trình điều khiển cơ sở dữ liệu tương ứng

Sơ đồ sau đây minh họa cách thức hoạt động của PDO

PDO giúp dễ dàng triển khai các ứng dụng PHP vì nó không yêu cầu bạn phải đưa bất kỳ tệp script nào vào ứng dụng của mình theo cách thủ công như các thư viện khác

Phần 1. Bắt đầu nhanh PDO

Phần này chỉ cho bạn từng bước cách kết nối với một số hệ thống quản lý cơ sở dữ liệu quan hệ, bao gồm MySQL và PostgreSQL

  • Kết nối với MySQL – chỉ cho bạn từng bước về cách kết nối với cơ sở dữ liệu MySQL
  • Kết nối với PostgreSQL – chỉ cho bạn cách kết nối với cơ sở dữ liệu PostgreSQL

Phần 2. Tạo cơ sở dữ liệu mẫu

  • Tạo cơ sở dữ liệu mẫu – chỉ cho bạn cách tạo cơ sở dữ liệu mẫu và bảng trong máy chủ cơ sở dữ liệu MySQL và tập lệnh có thể tái sử dụng để kết nối với cơ sở dữ liệu
  • Tạo bảng mới – tìm hiểu cách tạo bảng mới trong cơ sở dữ liệu MySQL từ PHP bằng PDO

Phần 3. báo cáo chuẩn bị

  • Câu lệnh soạn sẵn – giới thiệu với các bạn câu lệnh soạn sẵn
  • Thực thi toán tử LIKE – chỉ cho bạn cách sử dụng câu lệnh chuẩn bị để thực hiện truy vấn có chứa toán tử LIKE
  • Thực thi toán tử IN – tìm hiểu cách sử dụng câu lệnh đã chuẩn bị sẵn để thực hiện truy vấn có chứa toán tử IN

phần 4. CRUD trong PDO

Phần này minh họa thao tác cơ sở dữ liệu phổ biến, bao gồm tạo [chèn], đọc [chọn], cập nhật và xóa dữ liệu bằng PDO. Các hoạt động cơ bản này thường được gọi là CRUD

  • Chèn dữ liệu vào bảng – hướng dẫn bạn các bước chèn dữ liệu vào bảng của cơ sở dữ liệu
  • Cập nhật dữ liệu trong bảng – chỉ cho bạn cách cập nhật dữ liệu trong bảng từ PHP bằng PDO
  • Chọn dữ liệu từ bảng – hướng dẫn cách truy vấn dữ liệu từ bảng
  • Xóa dữ liệu khỏi bảng – chỉ cho bạn cách xóa dữ liệu trong bảng cơ sở dữ liệu bằng API PDO

Phần 5. Đang tìm nạp dữ liệu

Phần này thảo luận chi tiết về các phương thức và chế độ tìm nạp* khác nhau

  • fetch[] – tìm nạp một hàng từ tập kết quả được liên kết với đối tượng PDOStatement
  • fetchAll[] – lấy tất cả các hàng từ một đối tượng tập hợp kết quả vào một mảng
  • fetchcolumn[] – tìm nạp một cột từ hàng tiếp theo trong tập kết quả
  • fetchObject[] – tìm nạp hàng tiếp theo từ một tập hợp kết quả và trả về nó dưới dạng một đối tượng của một lớp
  • PDO. FETCH_KEY_PAIR – chọn kết quả hai cột trong một mảng trong đó cột đầu tiên là khóa và cột thứ hai là giá trị
  • PDO. FETCH_GROUP – nhóm các hàng theo các giá trị duy nhất của cột đầu tiên trong tập kết quả
  • PDO. FETCH_CLASS – chỉ cho bạn cách trả về một thể hiện của một lớp có các thuộc tính ánh xạ tới các giá trị cột từ cơ sở dữ liệu

Phần 6. Gọi thủ tục lưu trữ

Phần này cho bạn thấy một số ví dụ về xử lý các thủ tục được lưu trữ, bao gồm

  • Gọi thủ tục lưu trữ MySQL từ PHP bằng PDO – chỉ cho bạn cách gọi thủ tục lưu sẵn MySQL từ PHP bằng PDO

Phần 6. Quản lý giao dịch trong PDO

PDO cung cấp cho bạn một số phương pháp tiện dụng, bao gồm

PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]
00,
PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]
01 và
PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]
02 để xử lý các giao dịch một cách hiệu quả. Phần này cung cấp cho bạn một số ví dụ về xử lý các giao dịch trong ứng dụng web của bạn

Do tính đơn giản và dễ sử dụng của nó, PHP là ngôn ngữ kịch bản mục đích chung mã nguồn mở được sử dụng rộng rãi. PHP được sử dụng để tạo các trang web tương tác và động một cách nhanh chóng và có thể truy cập vào nhiều hệ thống quản lý cơ sở dữ liệu quan hệ như MySQL, PostgreSQL và SQLite. Nhiều người trong chúng ta đã truy cập cơ sở dữ liệu MySQL bằng cách sử dụng phần mở rộng MySQL hoặc MySQLi. Kể từ phiên bản 5. 1 PHP cung cấp thư viện trừu tượng hóa kết nối cơ sở dữ liệu mới, PHP Data Objects [PDO]

nội dung

PDO là gì?

  • PDO - Đối tượng dữ liệu PHP
  • Một tập hợp các tiện ích mở rộng PHP cung cấp lớp PDO cốt lõi và trình điều khiển cơ sở dữ liệu cụ thể
  • Cung cấp lớp trừu tượng truy cập dữ liệu nhẹ trung lập với nhà cung cấp
  • Tập trung vào trừu tượng hóa truy cập dữ liệu hơn là trừu tượng hóa cơ sở dữ liệu
  • PDO yêu cầu các tính năng hướng đối tượng mới trong lõi của PHP 5, do đó nó sẽ không chạy với các phiên bản PHP cũ hơn

Cài đặt PDO

PDO đang chia thành hai thành phần.
- Lõi cung cấp giao diện.
- Trình điều khiển để truy cập trình điều khiển cụ thể.

Cài đặt PDO trên hệ thống Unix.
-- PDO [Lõi] và trình điều khiển PDO_SQLITE [trình điều khiển SQLITE] được bật theo mặc định kể từ PHP 5. 1. 0. Để truy cập các cơ sở dữ liệu khác, bạn phải kích hoạt trình điều khiển PDO.
-- Để cài đặt PDO làm mô-đun dùng chung, php. ini cần được cập nhật để tiện ích mở rộng PDO sẽ được tải tự động khi PHP chạy. Bạn cũng cần bật các trình điều khiển dành riêng cho cơ sở dữ liệu khác và chúng phải được liệt kê sau pdo. vì vậy, vì PDO phải được khởi tạo trước khi có thể tải các tiện ích mở rộng dành riêng cho cơ sở dữ liệu. Nếu bạn đã tạo tĩnh PDO và các tiện ích mở rộng dành riêng cho cơ sở dữ liệu, bạn có thể bỏ qua bước này.
extension=pdo. vậy

Cài đặt PDO trên hệ thống Windows.
-- PDO và tất cả các trình điều khiển chính đi kèm với PHP dưới dạng tiện ích mở rộng dùng chung và chỉ cần được kích hoạt bằng cách chỉnh sửa tệp php. tập tin ini.
extension=php_pdo. dll.
Bước này không cần thiết cho PHP 5. 3 trở lên, vì DLL không còn cần thiết cho PDO.
-- Tiếp theo, chọn các tệp DLL dành riêng cho cơ sở dữ liệu khác và sử dụng dl[] để tải chúng khi chạy hoặc bật chúng trong php. ini bên dưới php_pdo. dll.

Để có được hiệu ứng của một cấu hình mới trong php. ini, bạn sẽ cần phải khởi động lại PHP

Hằng số được xác định trước

Cơ sở dữ liệu được hỗ trợ

Giao diện PDO có sẵn trong các trình điều khiển sau

Tên cơ sở dữ liệuTên trình điều khiểnCubridPDO_CUBRIDFreeTDS/Microsoft SQL Server/SybasePDO_DBLIBFirebird/Interbase 6PDO_FIREBIRDIBM DB2PDO_IBMIBM Informix Dynamic ServerPDO_INFORMIXMySQL 3. x/4. x/5. xPDO_MYSQLGiao diện cuộc gọi OraclePDO_OCIODBC v3 [IBM DB2, unixODBC và win32 ODBC]PDO_ODBCPostgreSQLPDO_PGSQLSQLite 3 và SQLite 2PDO_SQLITEMicrosoft SQL Server / SQL AzurePDO_SQLSRV4DPDO_4D

Cơ sở dữ liệu mẫu, bảng, cấu trúc bảng, bản ghi bảng cho các ví dụ khác nhau

mysql

Tên cơ sở dữ liệu. giờ
Tên máy chủ. localhost
Người dùng cơ sở dữ liệu. gốc
Mật khẩu. ' '

Cấu trúc của bảng. Chi tiết người dùng

 

Kỷ lục của bảng. Chi tiết người dùng

 

PostgreSQL

Tên cơ sở ngày. postgres
Tên máy chủ. localhost
Người dùng cơ sở dữ liệu. postgres
Mật khẩu. abc123

Cấu trúc của bảng. Chi tiết người dùng

 

Kỷ lục của bảng. Chi tiết người dùng

 

Lớp học PDO

Lớp đại diện cho kết nối giữa PHP và máy chủ cơ sở dữ liệu

cú pháp

PDO {
      __construct [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ] 
	bool beginTransaction [ void ] 
	bool commit [ void ] 
	mixed errorCode [ void ] 
	array errorInfo [ void ] 
	int exec [ string $statement ] 
	mixed getAttribute [ int $attribute ] 
	static array getAvailableDrivers [ void ] 
	bool inTransaction [ void ] 
	string lastInsertId [[ string $name = NULL ] ] 
	PDOStatement prepare [ string $statement [, array $driver_options = array[] ] ] 
	PDOStatement query [ string $statement ] 
	string quote [ string $string [, int $parameter_type = PDO::PARAM_STR ] ] 
	bool rollBack [ void ] 
	bool setAttribute [ int $attribute , mixed $value ] }mp[$var_name];
} 

Chi tiết về các phương thức của lớp PDO

PDO. __xây dựng

Tạo một phiên bản PDO đại diện cho một kết nối đến cơ sở dữ liệu

cú pháp

PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]

Thông số

dsn - Tên nguồn dữ liệu hoặc DSN, chứa thông tin cần thiết để kết nối với cơ sở dữ liệu. Chuỗi chứa tên tiền tố [e. g. pssql cho cơ sở dữ liệu PostgreSQL], dấu hai chấm và từ khóa máy chủ.
tên người dùng - Một chuỗi chứa tên người dùng. Tham số này là tùy chọn đối với một số trình điều khiển PDO.
password - Một chuỗi chứa mật khẩu của người dùng. Tham số này là tùy chọn đối với một số trình điều khiển PDO.
driver_options - Tùy chọn. Một mảng key=>value của các tùy chọn kết nối dành riêng cho trình điều khiển.

Giá trị trả về.
Trả về đối tượng PDO khi thành công. Nếu thất bại, trả về một đối tượng PDOException.

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

Các kết nối được thiết lập bằng cách tạo các thể hiện của lớp cơ sở PDO. Bạn muốn sử dụng trình điều khiển nào không quan trọng; . Hàm tạo chấp nhận các tham số để chỉ định nguồn cơ sở dữ liệu [được gọi là DSN] và tùy chọn cho tên người dùng và mật khẩu [nếu có]

kết nối mysql

        

Kết nối PostgreSQL


Xử lý lỗi kết nối

Nếu có bất kỳ lỗi kết nối nào, một đối tượng PDOException sẽ bị ném. Bạn có thể bắt ngoại lệ nếu bạn muốn xử lý tình trạng lỗi hoặc bạn có thể để nó cho trình xử lý ngoại lệ chung có thể được thiết lập thông qua set_Exception_handler[]

mysql

Ở đây id người dùng là sai


đầu ra

Error : SQLSTATE[28000] [1045] Access denied for user 'roott'@'localhost' [using password: NO]

PostgreSQL

Ở đây tên cơ sở dữ liệu là sai


đầu ra

Lỗi. SQLSTATE[08006] [7] không thể kết nối với máy chủ. Kết nối bị từ chối [0x0000274D/10061] Máy chủ có đang chạy trên máy chủ "localhost" [. 1] và chấp nhận kết nối TCP/IP trên cổng 5432? . xác thực mật khẩu không thành công cho người dùng "postgres"

Đóng kết nối


kết nối liên tục

Nhiều ứng dụng web sẽ được hưởng lợi từ việc tạo kết nối liên tục đến máy chủ cơ sở dữ liệu. Các kết nối liên tục không bị đóng ở cuối tập lệnh nhưng được lưu vào bộ nhớ cache và được sử dụng lại khi một tập lệnh khác yêu cầu kết nối bằng cùng thông tin đăng nhập. Bộ đệm kết nối liên tục cho phép bạn tránh được chi phí thiết lập kết nối mới mỗi khi tập lệnh cần nói chuyện với cơ sở dữ liệu, dẫn đến ứng dụng web nhanh hơn

mysql

________số 8

PostgreSQL

PDO. bắt đầu giao dịch

Tắt chế độ tự động cam kết và bắt đầu giao dịch. Giao dịch bắt đầu với PDO. bắt đầu Giao dịch và sẽ kết thúc khi PDO. cam kết hoặc PDO. khôi phục được gọi là

cú pháp

PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]
0

Giá trị trả về.
Trả về TRUE nếu thành công hoặc FALSE nếu thất bại.

Ví dụ.
Ví dụ sau đây một cơ sở dữ liệu MySQL có tên là hr và bảng có tên là user_details đã sử dụng. Nó bắt đầu một giao dịch và sau đó thực hiện một lệnh để thêm một hàng vào bảng user_details. Lệnh được gửi đến cơ sở dữ liệu và giao dịch được kết thúc rõ ràng bằng PDO. làm.

PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]
1

PDO. làm

Cam kết giao dịch, đưa kết nối cơ sở dữ liệu về chế độ tự động cam kết cho đến lần gọi tiếp theo tới PDO. beginTransaction[] bắt đầu một giao dịch mới

cú pháp

PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]
2

Giá trị trả về.
Trả về TRUE nếu thành công hoặc FALSE nếu thất bại.

Ví dụ.
Xem phần trước [PDO. beginTransaction] ví dụ.

PDO. mã lỗi

PDO. errorCode truy xuất SQLSTATE [giá trị lớp hai ký tự theo sau là giá trị lớp con ba ký tự] được liên kết với thao tác cuối cùng trên bộ điều khiển cơ sở dữ liệu

cú pháp

PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]
3

Giá trị trả về.
Trả về SQLSTATE năm ký tự dưới dạng một chuỗi hoặc NULL nếu không có thao tác nào trên bộ điều khiển câu lệnh.

Ví dụ

Trong ví dụ này, tên của cột bị sai chính tả [giới tính thay vì giới tính], gây ra lỗi. errorCode[] hiển thị lỗi

PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]
4

đầu ra

PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]
5

PDO. errorInfo

Truy xuất thông tin lỗi mở rộng liên quan đến thao tác cuối cùng trên xử lý cơ sở dữ liệu

cú pháp

PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]
6

Giá trị trả về.
Một mảng thông tin lỗi về thao tác cuối cùng được thực hiện bởi bộ xử lý cơ sở dữ liệu này. Mảng bao gồm các trường sau.

0. Mã lỗi SQLSTATE.
1. Mã lỗi dành riêng cho trình điều khiển.
2. Thông báo lỗi dành riêng cho trình điều khiển.

Ví dụ.
Trong ví dụ sau [cơ sở dữ liệu PostgreSQL được sử dụng], tên của cột bị sai chính tả [giới tính thay vì giới tính], gây ra lỗi, lỗi này sau đó được báo cáo.

PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]
7

đầu ra

PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]
8

PDO. giám đốc điều hành

Thực thi câu lệnh SQL và trả về số hàng bị ảnh hưởng bởi câu lệnh

cú pháp

PDO::__construct[] [ string $dsn [, string $username [, string $password [, array $driver_options ]]] ]
9

Thông số.
câu lệnh - Một câu lệnh SQL để chuẩn bị và thực thi.

Giá trị trả về.
Một số nguyên báo cáo số hàng bị ảnh hưởng. Nếu không có hàng nào bị ảnh hưởng, PDO. exec[] trả về 0.

Ví dụ

Trong ví dụ sau [cơ sở dữ liệu PostgreSQL được sử dụng], tên của cột bị sai chính tả [giới tính thay vì giới tính], gây ra lỗi, lỗi này sau đó được báo cáo

        
0

đầu ra

        
1

PDO. getAttribute

Truy xuất giá trị của thuộc tính trình điều khiển hoặc PDO được xác định trước

cú pháp

        
2

Thông số.
Một trong những PDO. hằng số ATTR_*. Các hằng số áp dụng cho các kết nối cơ sở dữ liệu như sau.
PDO. ATTR_AUTOCOMMIT
PDO. ATTR_CASE
PDO. ATTR_CLIENT_VERSION
PDO. ATTR_CONNECTION_STATUS
PDO. ATTR_DRIVER_NAME
PDO. ATTR_ERRMODE
PDO. ATTR_ORACLE_NULLS
PDO. ATTR_PERSISTENT
PDO. ATTR_PREFETCH
PDO. ATTR_SERVER_INFO
PDO. ATTR_SERVER_VERSION
PDO. ATTR_TIMEOUT

Giá trị trả về.
Một cuộc gọi thành công trả về giá trị của thuộc tính PDO được yêu cầu. Khi thất bại, trả về null.

Ví dụ.
Ví dụ sau [cơ sở dữ liệu PostgreSQL được sử dụng] truy xuất các thuộc tính kết nối cơ sở dữ liệu.

        
3

đầu ra

        
4

PDO. getAvailableDrivers

Trả về một mảng các trình điều khiển PDO có sẵn trong bản cài đặt PHP của bạn

cú pháp

        
5

Giá trị trả về.
Một mảng có danh sách trình điều khiển PDO.

Ví dụ

Ví dụ sau trả về một mảng tên trình điều khiển PDO có sẵn

        
6

đầu ra

        
7

PDO. trong giao dịch

Kiểm tra xem một giao dịch hiện đang hoạt động trong trình điều khiển. Phương pháp này chỉ hoạt động đối với trình điều khiển cơ sở dữ liệu hỗ trợ giao dịch

cú pháp

        
8

Giá trị trả về.
Trả về TRUE nếu giao dịch hiện đang hoạt động và FALSE nếu không.

PDO. LastInsertId

Trả về mã định danh của hàng hoặc giá trị chuỗi được chèn cuối cùng vào một bảng trong cơ sở dữ liệu

cú pháp

        
9

Giá trị trả về.
Nếu tên dãy không được chỉ định cho tham số tên, PDO. lastInsertId[] trả về một chuỗi biểu thị ID hàng của hàng cuối cùng được chèn vào cơ sở dữ liệu.
Nếu tên dãy được chỉ định cho tham số tên, PDO. lastInsertId[] trả về một chuỗi đại diện cho giá trị cuối cùng được lấy từ đối tượng trình tự đã chỉ định.
Nếu trình điều khiển PDO không hỗ trợ khả năng này, PDO. lastInsertId[] kích hoạt IM001 SQLSTATE.

Ví dụ

Ví dụ sau [cơ sở dữ liệu PostgreSQL được sử dụng] trả về ID của giá trị chuỗi hoặc hàng được chèn cuối cùng


0

PDO. chuẩn bị

Chuẩn bị một tuyên bố để thực hiện

cú pháp


1

Thông số.
câu lệnh. Một chuỗi chứa câu lệnh SQL hợp lệ.
driver_options. Một mảng chứa tên và giá trị thuộc tính [key=>value pair ].

Giá trị trả về.
Trả về đối tượng PDOStatement khi thành công. Khi thất bại, trả về một đối tượng PDOException hoặc sai tùy thuộc vào giá trị của PDO. ATTR_ERRMODE.

Ví dụ 1

Ví dụ sau chuẩn bị một câu lệnh SQL với các tham số được đặt tên


2

đầu ra


3

Ví dụ - 2

Ví dụ sau chuẩn bị một câu lệnh SQL với tham số dấu chấm hỏi


4

đầu ra


3

PDO. truy vấn

Thực thi một truy vấn SQL và trả về tập kết quả dưới dạng đối tượng PDOStatement

cú pháp


6

Thông số.
câu lệnh. Câu lệnh SQL để thực thi.

Giá trị trả về.
PDO. query[] trả về một đối tượng PDOStatement hoặc FALSE nếu không thành công.

Ví dụ

Trong ví dụ sau PDO. query[] lặp qua tập hợp hàng được trả về bởi câu lệnh SELECT


7

đầu ra


8

PDO. Trích dẫn

Đặt dấu ngoặc kép xung quanh chuỗi đầu vào để sử dụng trong truy vấn

cú pháp


9

Thông số.
string - Chuỗi được trích dẫn.
parameter_type - Cung cấp gợi ý kiểu dữ liệu cho trình điều khiển có kiểu trích dẫn thay thế.

Giá trị trả về.
Một chuỗi trích dẫn có thể được chuyển đến câu lệnh SQL hoặc sai nếu thất bại.

Ví dụ.
Ví dụ sau cho biết cách trích dẫn một chuỗi bình thường.


0

đầu ra


1

PDO. cuộn lại

Hoàn nguyên giao dịch hiện tại, do PDO bắt đầu. bắt đầu giao dịch[]. Một PDOException sẽ bị ném nếu không có giao dịch nào đang hoạt động

cú pháp


2

Giá trị trả về.
TRUE nếu gọi phương thức thành công, FALSE nếu không.

Ví dụ

Ví dụ sau bắt đầu một giao dịch và đưa ra câu lệnh DROP trước khi khôi phục các thay đổi. Trong MySQL, câu lệnh DROP TABLE tự động thực hiện giao dịch, do đó sẽ không có gì quay trở lại


3

PDO. setAttribute

Đặt một thuộc tính

cú pháp


4

Dưới đây là danh sách một số thuộc tính chung có sẵn

  • PDO. ATTR_CASE. Buộc tên cột vào một trường hợp cụ thể
  • PDO. CASE_LOWER. Buộc tên cột thành chữ thường
  • PDO. CASE_NATURAL. Để lại các tên cột như được trả về bởi trình điều khiển cơ sở dữ liệu
  • PDO. CASE_UPPER. Buộc tên cột thành chữ hoa
  • PDO. ATTR_ERRMODE. Báo cáo lỗi
  • PDO. ERRMODE_SILENT. Chỉ cần đặt mã lỗi
  • PDO. ERRMODE_WARNING. Tăng E_WARNING
  • PDO. ERRMODE_EXCEPTION. Ném ngoại lệ
  • PDO. ATTR_ORACLE_NULLS [có sẵn với tất cả các trình điều khiển, không chỉ Oracle]. Chuyển đổi NULL và chuỗi rỗng
  • PDO. NULL_NATURAL. Không chuyển đổi
  • PDO. NULL_EMPTY_STRING. Chuỗi rỗng được chuyển thành NULL
  • PDO. NULL_TO_STRING. NULL được chuyển đổi thành một chuỗi rỗng
  • PDO. ATTR_STRINGIFY_FETCHES. Chuyển đổi giá trị số thành chuỗi khi tìm nạp. Yêu cầu bool
  • PDO. ATTR_STATEMENT_CLASS. Đặt lớp câu lệnh do người dùng cung cấp bắt nguồn từ PDOStatement. Không thể được sử dụng với các phiên bản PDO liên tục. Yêu cầu mảng [tên lớp chuỗi, mảng [hàm tạo hỗn hợp_args]]
  • PDO. ATTR_TIMEOUT. Chỉ định thời gian chờ tính bằng giây. Không phải tất cả các trình điều khiển đều hỗ trợ tùy chọn này và ý nghĩa của nó có thể khác nhau giữa các trình điều khiển. Ví dụ: sqlite sẽ đợi đến giá trị thời gian này trước khi từ bỏ việc lấy khóa có thể ghi, nhưng các trình điều khiển khác có thể hiểu đây là khoảng thời gian chờ kết nối hoặc đọc
  • PDO. ATTR_AUTOCOMMIT [có sẵn trong OCI, Firebird và MySQL]. Có tự động cam kết từng câu lệnh hay không
  • PDO. ATTR_EMULATE_PREPARES Bật hoặc tắt mô phỏng các câu lệnh đã chuẩn bị. Một số trình điều khiển không hỗ trợ các câu lệnh được chuẩn bị sẵn hoặc có hỗ trợ hạn chế cho chúng. Sử dụng cài đặt này để buộc PDO luôn mô phỏng các câu lệnh đã chuẩn bị [nếu ĐÚNG] hoặc cố gắng sử dụng các câu lệnh đã chuẩn bị sẵn [nếu SAI]
  • PDO. MYSQL_ATTR_USE_BUFFERED_QUERY [có sẵn trong MySQL]. Sử dụng truy vấn đệm
  • PDO. ATTR_DEFAULT_FETCH_MODE. Đặt chế độ tìm nạp mặc định

Giá trị trả về.
Trả về TRUE nếu thành công hoặc FALSE nếu thất bại.

Ví dụ

Ví dụ sau cho biết cách đặt PDO. Thuộc tính ATTR_ERRMODE


5

đầu ra


6

Lớp PDOStatement

Đại diện cho một câu lệnh đã chuẩn bị và sau khi câu lệnh được thực thi, một tập hợp kết quả được liên kết

Thông tin chi tiết về lớp học


7

Tuyên bố PDO. ràng buộcColumn

Liên kết một biến PHP với một cột trong tập hợp kết quả

cú pháp


8

Thông số

TênMô tảLoại cộtSố cột [được lập chỉ mục 1] hoặc tên của cột trong tập hợp kết quả. mixparamTên của biến PHP mà cột sẽ được liên kết. mixtypeLoại dữ liệu của tham số, được chỉ định bởi PDO. hằng số PARAM_*. intmaxLenA gợi ý cho phân bổ trước [tùy chọn]. intdriverdata[Các] tham số tùy chọn cho trình điều khiển. Trộn

Giá trị trả về.
Trả về TRUE nếu thành công hoặc FALSE nếu thất bại.

Ví dụ.
Ví dụ sau đây cho thấy cách một biến có thể được liên kết với một cột trong tập hợp kết quả.


9

đầu ra

Error : SQLSTATE[28000] [1045] Access denied for user 'roott'@'localhost' [using password: NO]
0

Tuyên bố PDO. ràng buộcParam

Liên kết một tham số với tên biến đã chỉ định

cú pháp

Error : SQLSTATE[28000] [1045] Access denied for user 'roott'@'localhost' [using password: NO]
1

Thông số

Tên Mô tả Loại tham số Định danh tham số. Đối với câu lệnh đã chuẩn bị sử dụng trình giữ chỗ có tên, đây sẽ là tên tham số của biểu mẫu. Tên. mixvariableTên của biến PHP để liên kết với tham số câu lệnh SQL. mixdata_typeOptional, PDO. PARAM_* hằng số. intlengthLength của kiểu dữ liệu. intdriver_optionsCác tùy chọn tùy chọn [hỗn hợp] dành riêng cho trình điều khiển. Trộn

Giá trị trả về.
Trả về TRUE nếu thành công hoặc FALSE nếu thất bại.

Ví dụ - 1.
Ví dụ sau đây cho thấy cách thực thi một câu lệnh đã chuẩn bị với các trình giữ chỗ được đặt tên.

Error : SQLSTATE[28000] [1045] Access denied for user 'roott'@'localhost' [using password: NO]
2

Ví dụ - 2.
Ví dụ sau đây cho thấy cách thực thi một câu lệnh đã chuẩn bị với các chỗ dành sẵn cho dấu chấm hỏi.

Error : SQLSTATE[28000] [1045] Access denied for user 'roott'@'localhost' [using password: NO]
3

Tuyên bố PDO. bindValue

Liên kết một giá trị với một trình giữ chỗ có tên hoặc dấu chấm hỏi trong câu lệnh SQL

cú pháp

Error : SQLSTATE[28000] [1045] Access denied for user 'roott'@'localhost' [using password: NO]
4

Thông số

Tên Mô tả Loại tham số Định danh tham số. Đối với câu lệnh đã chuẩn bị sử dụng trình giữ chỗ có tên, đây sẽ là tên tham số của biểu mẫu. Tên. giá trị hỗn hợpGiá trị để liên kết với tham số. mixdata_typeOptional, PDO. PARAM_* hằng số. int

Giá trị trả về.
Trả về TRUE nếu thành công hoặc FALSE nếu thất bại.

Ví dụ - 1.
Ví dụ sau đây cho thấy cách thực thi một câu lệnh đã chuẩn bị với các trình giữ chỗ được đặt tên.

Error : SQLSTATE[28000] [1045] Access denied for user 'roott'@'localhost' [using password: NO]
5

đầu ra

Error : SQLSTATE[28000] [1045] Access denied for user 'roott'@'localhost' [using password: NO]
6

Ví dụ - 2.
Ví dụ sau đây cho thấy cách thực thi một câu lệnh đã chuẩn bị với các chỗ dành sẵn cho dấu chấm hỏi.

Error : SQLSTATE[28000] [1045] Access denied for user 'roott'@'localhost' [using password: NO]
7

đầu ra

Error : SQLSTATE[28000] [1045] Access denied for user 'roott'@'localhost' [using password: NO]
8

Tuyên bố PDO. đóng con trỏ

Đóng con trỏ, cho phép thực hiện lại câu lệnh

cú pháp

Error : SQLSTATE[28000] [1045] Access denied for user 'roott'@'localhost' [using password: NO]
9

Giá trị trả về.
Trả về TRUE nếu thành công hoặc FALSE nếu thất bại.

Ví dụ 1


0

Tuyên bố PDO. số cột

Trả về số cột trong một tập hợp kết quả

cú pháp


1

Giá trị trả về.
Trả về TRUE nếu thành công hoặc FALSE nếu thất bại.

Ví dụ - 1.
Ví dụ sau hiển thị số cột của một bảng cụ thể.


2

đầu ra


3

Tuyên bố PDO. gỡ lỗiDumpParams

Kết xuất một lệnh chuẩn bị SQL

p>Cú pháp.

4

Giá trị trả về.
Không có giá trị nào được trả về.

Ví dụ - 1.
Đây là một ví dụ về PDOStatement. gỡ lỗiDumpParams[].


5

đầu ra


6

Tuyên bố PDO. mã lỗi

Tìm nạp SQLSTATE của hoạt động gần đây nhất trên đối tượng câu lệnh cơ sở dữ liệu

cú pháp


7

Giá trị trả về.
Tương tự với PDO. errorCode[], ngoại trừ PDOStatement đó. errorCode[] chỉ truy xuất mã lỗi cho các thao tác được thực hiện với các đối tượng PDOStatement.

Ví dụ - 1.
Trong ví dụ sau, truy vấn SQL có lỗi [tên cột sai]. errorCode[] hiển thị lỗi.


8

đầu ra


9

Tuyên bố PDO. errorInfo

Truy xuất thông tin lỗi liên quan đến thao tác cuối cùng trên xử lý câu lệnh

cú pháp


0

Thông số

Tham số NameDescriptionType
Tham số định danh. Đối với câu lệnh đã chuẩn bị sử dụng trình giữ chỗ có tên, đây sẽ là tên tham số của biểu mẫu. Tên. giá trị hỗn hợpGiá trị để liên kết với tham số. mixdata_typeOptional, PDO. PARAM_* hằng số. int

Giá trị trả về.
PDOCâu lệnh. errorInfo[] trả về một mảng thông tin lỗi về thao tác cuối cùng được thực hiện bởi phần xử lý câu lệnh này. Mảng bao gồm các trường sau.

0 - Mã lỗi SQLSTATE.
1 - Mã lỗi dành riêng cho trình điều khiển.
2 - Thông báo lỗi dành riêng cho trình điều khiển.

Ví dụ - 1.
Trong ví dụ sau, câu lệnh SQL có lỗi, được hiển thị bởi errorinfo[].


1

đầu ra


2

Tuyên bố PDO. hành hình

Thực hiện một tuyên bố chuẩn bị

cú pháp


3

Thông số

NameDescriptionTypeinput_parametersMột mảng chứa các giá trị cho các dấu tham số. mảng

Giá trị trả về.
Trả về TRUE nếu thành công hoặc FALSE nếu thất bại.

Ví dụ - 1.
Ví dụ sau thực thi một biến đã chuẩn bị với các biến bị ràng buộc.


4

đầu ra


5

Tuyên bố PDO. tìm về

Tìm nạp hàng tiếp theo từ tập kết quả

cú pháp


6

Thông số

NameDescriptionTypeparameterKiểm soát cách hàng tiếp theo sẽ được trả lại cho người gọi. Giá trị này phải là một trong các PDO. FETCH_* hằng số [xem chi tiết về hằng số], mặc định là giá trị của PDO. ATTR_DEFAULT_FETCH_MODE [mặc định là PDO. FETCH_BOTH]. intcursor_orientation Giá trị này phải là một trong các PDO. Hằng số FETCH_ORI_*, mặc định là PDO. FETCH_ORI_NEXT. intoffsetĐối với một đối tượng PDOStatement đại diện cho một con trỏ có thể cuộn mà tham số cursor_orientation được đặt thành PDO. FETCH_ORI_ABS, giá trị này chỉ định số lượng tuyệt đối của hàng trong tập hợp kết quả sẽ được tìm nạp. int

Giá trị trả về.
Giá trị trả về của hàm này khi thành công phụ thuộc vào loại tìm nạp. Trong mọi trường hợp, FALSE được trả về khi thất bại.

Ví dụ - 1.
Ví dụ sau cho biết cách tìm nạp hàng bằng các kiểu tìm nạp khác nhau.


7

đầu ra


8

Tuyên bố PDO. lấy tất cả

Trả về một mảng chứa các hàng trong tập hợp kết quả

cú pháp


9

Thông số

NameDescriptionTypefetch_styleChỉ định định dạng của dữ liệu hàng. mixfetch_argument Đối số này có ý nghĩa khác nhau tùy thuộc vào giá trị của thông số fetch_style
PDO. FETCH_COLUMN. Trả về cột được lập chỉ mục 0 được chỉ định.
PDO. FETCH_CLASS. Trả về các phiên bản của lớp đã chỉ định, ánh xạ các cột của mỗi hàng tới các thuộc tính được đặt tên trong lớp.
PDO. FETCH_FUNC. Trả về kết quả gọi hàm đã chỉ định, sử dụng các cột của mỗi hàng làm tham số trong lệnh gọi. mixctor_argsArguments của hàm tạo lớp tùy chỉnh khi tham số fetch_style là PDO. FETCH_CLASS. int

Giá trị trả về.
Một mảng gồm các hàng còn lại trong tập kết quả hoặc sai nếu lệnh gọi phương thức không thành công.

Ví dụ - 1.
Ví dụ sau tìm nạp tất cả các hàng còn lại trong tập hợp kết quả

0

đầu ra

1

 

Tuyên bố PDO. tìm nạpColumn

Trả về một cột trong một hàng từ hàng tiếp theo của tập hợp kết quả

cú pháp

2

Thông số

TênMô tảTypecolumn_numberMột số nguyên tùy chọn cho biết số cột dựa trên số không. Mặc định là 0 [cột đầu tiên trong hàng]. Trộn

Giá trị trả về.
Trả về TRUE nếu thành công hoặc FALSE nếu thất bại.

Ví dụ - 1.
Ví dụ sau trả về một cột liên tiếp.

3

đầu ra

4

 

Tuyên bố PDO. tìm nạp đối tượng

Truy xuất hàng tiếp theo dưới dạng đối tượng

cú pháp

5

Thông số

NameDescriptionTypeclass_nameTên lớp cần tạo. stringctor_argsMột mảng có đối số cho hàm tạo của lớp tùy chỉnh. mảng

Giá trị trả về.
Khi thành công, trả về một đối tượng với một thể hiện của lớp. Trả về false khi thất bại.

6

đầu ra

7

Tuyên bố PDO. getAttribute

Truy xuất thuộc tính câu lệnh

cú pháp

8

Nhận một thuộc tính của câu lệnh. Hiện tại, không có thuộc tính chung nào tồn tại nhưng trình điều khiển duy nhất cụ thể

Giá trị trả về.
Trả về giá trị thuộc tính.

Tuyên bố PDO. getColumnMeta

Trả về siêu dữ liệu cho một cột trong tập hợp kết quả

cú pháp

9

Thông số

NameDescriptionTypecolumnCột có chỉ số 0 trong tập hợp kết quả. int

Giá trị trả về.
Trả về một mảng kết hợp.

Ghi chú. Chức năng này là THỬ NGHIỆM

Ví dụ - 1.
Ví dụ sau đây cho thấy kết quả truy xuất siêu dữ liệu.

0

đầu ra

1

Tuyên bố PDO. tiếp theoRowset

Di chuyển con trỏ đến tập hợp hàng tiếp theo trong bộ điều khiển câu lệnh nhiều hàng

cú pháp

2

Giá trị trả về.
Trả về TRUE nếu thành công hoặc FALSE nếu thất bại.

Ví dụ - 1.
Ví dụ sau đây cho thấy cách con trỏ di chuyển đến tập hợp hàng tiếp theo trong câu lệnh nhiều hàng.

3

đầu ra

4

Tuyên bố PDO. đếm số hàng

Trả về số hàng bị ảnh hưởng [thêm, xóa hoặc thay đổi] bởi câu lệnh cuối cùng

cú pháp

5

Giá trị trả về.
Trả về số hàng.

Ví dụ - 1.
Ví dụ sau đây cho thấy cách thực thi một câu lệnh đã chuẩn bị với các trình giữ chỗ được đặt tên.

6

đầu ra

7

Tuyên bố PDO. setAttribute

Đặt thuộc tính câu lệnh. Hiện tại, không có thuộc tính chung nào được đặt mà chỉ có trình điều khiển cụ thể

cú pháp

8

Giá trị trả về

Trả về TRUE nếu thành công hoặc FALSE nếu thất bại

Tuyên bố PDO. setFetchMode

Đặt chế độ tìm nạp mặc định cho câu lệnh này

cú pháp

9

Thông số

NameDescriptionTypemodeChế độ tìm nạp phải là một trong các PDO. FETCH_* hằng số. Xem danh sách hằng số. hỗn hợpcolnoSố cột. intclassnameTên lớp. đối số stringctorargsConstructor. đối tượng mảngĐối tượng. vật

Làm cách nào để tạo đối tượng PDO trong PHP?

$pdo = PDO mới[$dsn, $user, $passwd]; Một đối tượng PDO mới được tạo. Chúng tôi chuyển cho hàm tạo tên nguồn dữ liệu, tên người dùng và mật khẩu. Lớp PDO đại diện cho kết nối giữa PHP và máy chủ cơ sở dữ liệu.

Các lớp PDO trong PHP là gì?

PDO là lớp truy cập cơ sở dữ liệu cung cấp giao diện nhanh và nhất quán để truy cập và quản lý cơ sở dữ liệu trong các ứng dụng PHP . Mỗi DBMS có một trình điều khiển PDO cụ thể phải được cài đặt khi bạn đang sử dụng PDO trong các ứng dụng PHP.

Tuyên bố PDO là gì?

Theo thuật ngữ thông thường, các câu lệnh chuẩn bị PDO hoạt động như thế này. Chuẩn bị một truy vấn SQL với các giá trị trống làm trình giữ chỗ có dấu chấm hỏi hoặc tên biến có dấu hai chấm trước cho mỗi giá trị . Liên kết các giá trị hoặc biến với trình giữ chỗ. Thực hiện truy vấn đồng thời.

Sự khác biệt giữa PDO và MySQL là gì?

Như đã nêu trước đó, cả PDO và MySQLi đều cực kỳ giống nhau, nhưng có một số khác biệt nhỏ về cú pháp. MySQLi tuân theo quy ước solid_case truyền thống của PHP, trong khi PDO sử dụng camelCase . Ngoài ra, các phương thức của MySQLi được sử dụng làm thuộc tính đối tượng, trong khi PDO sử dụng cú pháp truyền thống cho các hàm.

Chủ Đề