Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Vận hành CRUD dễ dàng với Kết nối cơ sở dữ liệu PDO

Cơ sở dữ liệu có ở khắp mọi nơi và không có ứng dụng PHP thực tế nào có thể tồn tại nếu không có cơ sở dữ liệu. Ngay từ đầu, PHP đã đưa ra một số cách giao tiếp với tất cả các DBMS phổ biến. Ví dụ:hai cách phổ biến để giao tiếp với cơ sở dữ liệu dựa trên MySQL là mysql mysqli.

Qua nhiều năm, cơ sở dữ liệu đã trải qua một chặng đường dài và giờ đây, một số nhà cung cấp khác nhau cung cấp DBMS phổ biến cung cấp năng lượng cho các ứng dụng PHP hiện đại. Để chuẩn hóa và hợp lý hóa các hoạt động phát triển, PHP đã giới thiệu Đối tượng dữ liệu PHP (PDO) trong PHP 5.1. Các đối tượng này được sử dụng để thiết lập kết nối cơ sở dữ liệu PDO.

PDO là một lớp truy cập cơ sở dữ liệu cung cấp một giao diện nhanh chóng 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 đều có (các) 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.

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

Tên trình điều khiển Cơ sở dữ liệu được hỗ trợ

PDO_CUBRID Cubrid
PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRD Firebird
PDO_IBM IBM DB2
PDO_INFORMIX Máy chủ động IBM Informix
PDO_MYSQL MySQL 3.x / 4.x / 5.x
PDO_OCI Giao diện cuộc gọi Oracle
PDO_ODBC ODBC v3 (IBM DB2, unixODBC và win32 ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 và SQLite 2
PDO_SQLSRV Microsoft SQL Server / SQL Azure
PDO_4D 4D

Theo mặc định, PHP đã cài đặt trình điều khiển PDO_SQLite. Tuy nhiên, nếu bạn muốn làm việc với các cơ sở dữ liệu khác, trước tiên bạn phải cài đặt trình điều khiển có liên quan.

để kiểm tra trình điều khiển nào được cài đặt trên hệ thống của bạn, hãy tạo một tệp PHP mới và thêm đoạn mã sau vào đó:

<?php

print_r(PDO::getAvailableDrivers());

?>

Làm việc với PDO

PDO thay thế tất cả các cách tiếp cận tương tác cơ sở dữ liệu trước đây. Sử dụng PDO, bạn có thể dễ dàng thực hiện CRUD và các hoạt động DBMS liên quan. Trên thực tế, PDO hoạt động như một lớp ngăn cách các hoạt động liên quan đến cơ sở dữ liệu với phần còn lại của mã.

Bạn cũng có thể thích: CRUD đơn giản trong PHP và MySQL

Khả năng kết nối

Một trong những lợi ích quan trọng nhất của PDO là khả năng kết nối cơ sở dữ liệu đơn giản và rất dễ hiểu. Hãy xem xét đoạn mã sau được sử dụng để thiết lập kết nối với cơ sở dữ liệu. Lưu ý rằng khi DBMS cơ bản thay đổi, thay đổi duy nhất mà bạn cần thực hiện là kiểu cơ sở dữ liệu.

<?php

Class Connection {

private  $server = "mysql:host=localhost;dbname=cloudways";

private  $user = "root";

private  $pass = "";

private $options  = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,);

protected $con;
 
          	public function openConnection()

           	{

               try

                 {

	        $this->con = new PDO($this->server, $this->user,$this->pass,$this->options);

	        return $this->con;

                  }

               catch (PDOException $e)

                 {

                     echo "There is some problem in connection: " . $e->getMessage();

                 }

           	}

public function closeConnection() {

   	$this->con = null;

	}

}

?>

Trong đoạn mã trên, hãy lưu ý rằng DBMS là MySQL. Tuy nhiên, nếu DBMS thay đổi thành MS SQL Server, thì thay đổi duy nhất sẽ là sự thay thế của mysql với mssql.

Lưu ý: PDO có thể xử lý các trường hợp ngoại lệ. Do đó, hãy luôn gói gọn hoạt động của nó trong một khối try and catch.


Ngừng lãng phí thời gian trên máy chủ

Cloudways xử lý việc quản lý máy chủ cho bạn để bạn có thể tập trung vào việc tạo ra các ứng dụng tuyệt vời và giữ cho khách hàng của bạn hài lòng.

Bắt đầu miễn phí


Tạo bảng với PDO

Để tạo bảng, trước tiên hãy khai báo một chuỗi truy vấn và sau đó thực thi nó bằng execute hoạt động như không có dữ liệu nào được trả về.

<?php

include_once 'connection.php';

try

{

     $database = new Connection();

     $db = $database->openConnection();

     // sql to create table

     $sql = "CREATE TABLE `Student` ( `ID` INT NOT NULL AUTO_INCREMENT , `name`VARCHAR(40) NOT NULL , `last_ame` VARCHAR(40) NOT NULL , `email` VARCHAR(40)NOT NULL , PRIMARY KEY (`ID`)) ";

     // use exec() because no results are returned

     $db->exec($sql);

     echo "Table Student created successfully";

     $database->closeConnection();

}

catch (PDOException $e)

{

    echo "There is some problem in connection: " . $e->getMessage();

}

?>

Chèn dữ liệu bằng PDO

Để chèn dữ liệu vào bảng bằng PDO, trước tiên hãy chuẩn bị truy vấn bằng cách sử dụng chuẩn bị tuyên bố. Tiếp theo, truy vấn này được thực thi với thực thi hàm số. Lưu ý rằng phương pháp này ngăn chặn các cuộc tấn công đưa vào SQL.

<?php

include_once 'connection.php';

try

{

    $database = new Connection();

    $db = $database->openConnection();

    // inserting data into create table using prepare statement to prevent from sql injections

    $stm = $db->prepare("INSERT INTO student (ID,name,last_name,email) VALUES ( :id, :name, :lastname, :email)") ;

    // inserting a record

    $stm->execute(array(':id' => 0 , ':name' => 'Saquib' , ':lastname' => 'Rizwan' , ':email' => '[email protected]'));

    echo "New record created successfully";

}

catch (PDOException $e)

{

    echo "There is some problem in connection: " . $e->getMessage();

}

?>

Chọn dữ liệu với PDO

Để chọn dữ liệu, trước tiên hãy tạo một chuỗi truy vấn và sau đó thực thi nó trong cho từng vòng lặp để tìm nạp các bản ghi từ bảng.

<?php

include_once 'connection.php';

try

{

    $database = new Connection();

    $db = $database->openConnection();

    $sql = "SELECT * FROM student " ;

    foreach ($db->query($sql) as $row) {

    echo " ID: ".$row['ID'] . "<br>";

    echo " Name: ".$row['name'] . "<br>";

    echo " Last Name: ".$row['last_name'] . "<br>";

    echo " Email: ".$row['email'] . "<br>";

    }

}

catch (PDOException $e)

{

    echo "There is some problem in connection: " . $e->getMessage();

}

?>

Cập nhật dữ liệu với PDO

Để cập nhật bản ghi trong bảng, trước tiên hãy khai báo một chuỗi truy vấn và sau đó thực thi nó bằng execute chức năng.

<?php

include_once 'connection.php';

try

{

     $database = new Connection();

     $db = $database->openConnection();

     $sql = "UPDATE `student` SET `name`= 'yourname' , `last_name` = 'your lastname' , `email` = 'your email' WHERE `id` = 8" ;

     $affectedrows  = $db->exec($sql);

   if(isset($affectedrows))

    {

       echo "Record has been successfully updated";

    }          

}

catch (PDOException $e)

{

    echo "There is some problem in connection: " . $e->getMessage();

}

?>

Xóa dữ liệu bằng PDO

Để xóa bản ghi khỏi bảng, trước tiên hãy khai báo một chuỗi truy vấn và sau đó thực thi nó bằng execute chức năng.

<?php

include_once 'connection.php';

try

{

     $database = new Connection();

     $db = $database->openConnection();

     $sql = "DELETE FROM student WHERE `id` = 8" ;

     $affectedrows  = $db->exec($sql);

   if(isset($affectedrows))

    {

       echo "Record has been successfully deleted";

    }          

}

catch (PDOException $e)

{

   echo "There is some problem in connection: " . $e->getMessage();

}

?>

Kết luận

PDO là lớp truy cập dữ liệu giúp giảm bớt đáng kể quá trình kết nối và làm việc với cơ sở dữ liệu. Có lẽ, điều tốt nhất về PDO là quá trình di chuyển cơ sở dữ liệu được sắp xếp hợp lý. Nếu bạn muốn tăng tốc các truy vấn PDO của mình bằng các trình vòng lặp, hãy xem bài viết này của Michelangelo van Dam.

Trong bài viết này, tôi đã giới thiệu về PDO và nêu bật cách bạn có thể thực hiện các hành động CRUD bằng cách sử dụng PDO trong PHP. Tôi cũng đã chứng minh việc thiết lập các kết nối cơ sở dữ liệu PDO. Nếu bạn có câu hỏi hoặc muốn thêm vào cuộc thảo luận, hãy để lại bình luận bên dưới.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chờ thống kê và kho truy vấn

  2. ODBC 4.0

  3. TẠO BẢNG trong SQL - Mọi thứ bạn cần biết về tạo bảng trong SQL

  4. Lần cuối cùng, KHÔNG, bạn không thể tin tưởng IDENT_CURRENT ()

  5. Hiệu suất của sys.partitions