PHP PDO

0
5

PHP PDO

PDO là viết tắt của PHP Data Object , PDO hoạt động bằng cách cung cấp một bộ hàm tiêu chuẩn cho các hoạt động cơ sở dữ liệu phổ biến suc khoe như kết nối, truy vấn, xử lý tập kết quả và xử lý lỗi, đồng thời dịch nội bộ các hàm này sang các lệnh gọi API gốc mà cơ sở dữ liệu đang sử dụng hiểu được.

Giới thiệu PHP PDO

Có một thực tế là PHP là một ngôn ngữ kịch bản mã nguồn mở, có mục đích chung, được sử dụng chủ yếu để tạo các trang web động và tương tác. PHP có thể sử dụng một loạt các hệ thống quản lý cơ sở dữ liệu quan hệ như MYSQL, SQLite và PostgreSQL. Đối tượng dữ liệu PHP (PDO) về cơ bản là một thư viện trừu tượng kết nối cơ sở dữ liệu mới đã được cung cấp bởi phiên bản PHP 5.1.

Hãy bắt đầu với Đối tượng dữ liệu PHP (PDO)

PDO nói chung là chữ viết tắt của Đối tượng dữ liệu PHP, là một phần mở rộng PHP xác định một giao diện nhẹ và nhất quán để truy cập cơ sở dữ liệu PHP. Một lớp PDO cốt lõi và trình điều khiển dành riêng cho cơ sở dữ liệu được cung cấp bởi tập hợp các phần mở rộng PHP. Mỗi và mọi trình điều khiển cơ sở dữ liệu có thể dễ dàng hiển thị các tính năng dành riêng cho cơ sở dữ liệu như một chức năng mở rộng thông thường triển khai giao diện PDO.

Xin lưu ý rằng không thể thực hiện bất kỳ loại chức năng cơ sở dữ liệu nào bằng cách sử dụng chính phần mở rộng PDO. Trình điều khiển PDO dành riêng cho cơ sở dữ liệu phải được sử dụng để truy cập máy chủ cơ sở dữ liệu.

Trọng tâm chính của PDO là trừu tượng truy cập dữ liệu thay vì trừu tượng cơ sở dữ liệu. Lớp trừu tượng truy cập dữ liệu được cung cấp bởi PDO có nghĩa là bất kể cơ sở dữ liệu nào được sử dụng, các chức năng tương tự do cơ sở dữ liệu đó cung cấp để đưa ra truy vấn và tìm nạp dữ liệu phải được sử dụng. Tính trừu tượng hóa dữ liệu không được cung cấp bởi PDO, vì SQL hoặc mô phỏng các tính năng bị thiếu không được nó viết lại.

Lợi ích của việc sử dụng PDO

PDO được gọi là trình điều khiển cơ sở dữ liệu gốc. Dưới đây là một số lợi ích của việc sử dụng PDO:

  • Hỗ trợ cơ sở dữ liệu: Bất kỳ cơ sở dữ liệu nào được viết cho trình điều khiển PDO đều có thể được truy cập bằng phần mở rộng PDO. Đây là một số trình điều khiển PDO có sẵn để sử dụng cho các cơ sở dữ liệu Free Sybase, IBM DB2, Oracle Call Interface, Firebird / Interbase 6TDS, Microsoft SQL Server và PostgreSQL. Xin lưu ý rằng các trình điều khiển không có sẵn trong mọi hệ thống theo mặc định, do đó, các trình điều khiển có sẵn và trình bổ sung cần được tìm thấy bất cứ khi nào người dùng cần.
  • Khả năng sử dụng: PDO bao gồm nhiều chức năng trợ giúp để vận hành các hoạt động thường xuyên tự động.
  • Khả năng tái sử dụng: PDO cung cấp API hợp nhất để truy cập vào nhiều cơ sở dữ liệu.
  • Bảo mật: Một câu lệnh được chuẩn bị sẵn để bảo vệ khỏi việc tiêm SQL được PDO sử dụng. Một câu lệnh chuẩn bị về cơ bản là một câu lệnh SQL được biên dịch trước được sử dụng để tách lệnh của câu lệnh SQL khỏi dữ liệu.

Các lớp trong PDO

Về cơ bản có ba lớp PDO như được thảo luận dưới đây:

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

PDOStatement – Lớp PDO này về cơ bản đại diện cho câu lệnh đã chuẩn bị và sau khi thực hiện câu lệnh, nó đặt một kết quả liên quan.

PDOException – Lớp PDO này thường đại diện cho các lỗi do PDO đưa ra.

Đây là Cơ sở dữ liệu được hỗ trợ bởi PDO

  • MySQL
  • Firebird
  • Máy chủ MS SQL
  • PostgreSQL
  • Oracle
  • Sybase
  • SQLite
  • Cubrid
  • Informix
  • IBM
  • FreeTDS

Bạn nên chọn PDO hay MySQLi cái nào?

Xin lưu ý rằng cả PDO và MySQLi đều có lợi thế riêng theo các điều khoản của riêng chúng:

  • Như chúng ta biết rằng PDO hoạt động trên 12 hệ thống cơ sở dữ liệu khác nhau và mặt khác MySQL bị hạn chế chỉ hoạt động với cơ sở dữ liệu MySQL. Do đó, nếu người dùng muốn chuyển dự án của mình sang một cơ sở dữ liệu khác thì điều đó sẽ dễ dàng hơn trên PDO. Người dùng phải viết lại toàn bộ mã trong MySQLi.
  • PDO và MySQLi về cơ bản là Hướng đối tượng nhưng trong trường hợp của MySQLi, nó cũng cung cấp API thủ tục. Cả hai phần mở rộng đều hỗ trợ các Câu lệnh chuẩn bị vì các Câu lệnh chuẩn bị rất quan trọng đối với bảo mật ứng dụng web và chúng bảo vệ khỏi việc tiêm SQL.

Chuỗi DNS chung

Cơ sở dữ liệuChuỗi DSN
MySQL‘mysql: host = host; port = port; dbname = db’
SQLite‘sqllite: path / to / database / file’
PostgreSQL‘pgsql: host = host port = port dbname = db user = user password = pass’
Oracel‘oci: dbname = // host: port / db’
Firebird‘firebird: User = user; Password = pass; Database = db; DataSource = host; Port = port’

Tạo cơ sở dữ liệu “pdo”

create database pdo

Tạo bảng “users”

create table users
(
id int PRIMARY key AUTO_INCREMENT,
name char(50) not null,
email varchar(100) not null,
mobile bigint not null    
);

Kết nối cơ sở dữ liệu bằng mysql

<?php  
   $Host="localhost";  
    $User="root";          
    $Password="";
	$Database="pdo";	
    try
	{  
        $pdo= new PDO("mysql:host=$Host;dbname=$Database",$User,$Password);  
     } 
	 catch(PException $e)
	 {  
    die("Error: Could not connect");  
    }    
?>

Form và PHP Script

<?php  
//get form value and save data 
extract($_REQUEST);
if(isset($save))	
{
	$query="insert into users(name,email,mobile) values('$n','$e','$m')";
	if($pdo->query($query))
	{
	echo "Data Saved successfully";	
	}	
	else
	{
	echo "Some error while executing PDO Connectivity";	
	}
}
?>
<html>
	<head>
		<title>PDO Connectivity</title>
	</head>
	<body>
		<form>
			<table>
				<tr>
					<td>Enter Your Name</td>
					<td><input type="text" name="n"/></td>
				</tr>
				<tr>
					<td>Enter Your Email</td>
					<td><input type="email" name="e"/></td>
				</tr>
				<tr>
					<td>Enter Your Mobile</td>
					<td><input type="number" name="m"/></td>
				</tr>
				<tr>
					<td colspan="2" align="center">
					<input type="submit" name="save" value="save data"/>
					</td>
				</tr>
			</table>
		</form>
	</body>
</html>

Tìm nạp dữ liệu bằng PDO

<table class = "table table-bordered"> 
<tr class = "thead-light"> 
<th> Sr No </th> 
<th> Tên </th> 
<th> Email </th> 
<th> Di động </th> 
</tr> 
<? php 
$ i = 1; 
$ query = $ pdo-> query ("chọn * từ người dùng"); 
while ($ result = $ query-> fetch (PDO :: FETCH_ASSOC)) 
{ 
	echo "<tr>"; 
	echo "<td>". $ i. "</td>"; 
	echo "<td>". $ result ['name']. "</td>"; 
	echo "<td>". $ result ['email']. "</td>"; 
	echo "<td>". $ result ['mobile']. "</td>"; 
	echo "</tr>"; 
	$ i ++; 
} 
?> 
</table>

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây