Serialize trong PHP (Bài trước)
(Bài tiếp) PHP NÂNG CAO

Giới thiệu Microsoft Drivers for PHP for SQL Server

Microsoft Drivers for PHP for SQL Server là một phần mở rộng (extension) cho PHP nó cho phép ứng dụng PHP có thể truy vấn đến CSDL MS SQL Server. Extension này cung cấp giao diện truy cập hướng thủ tục với driver SQLSRV và hướng đối tượng với driver PDO_SQLSRV.

Cài đặt SQLSRV, PDO_SQLSRV cho PHP

Để sử dụng được Microsoft Drivers for PHP for SQL Server trước tiên bạn cần cài đặt Microsoft ODBC Driver trên máy (server) chạy PHP. Sau đó mới cài đặt các driver cho PHP.

Cài đặt ODBC Driver for SQL Server

Trên Windows

Bạn tải về phiên bản tương ứng, rồi chạy để cài đặt:

Tham khảo các phiên bản tại: ODBC Driver for SQL Server

Trên Linux: CentOS/RHEL

sudo su
#RHEL / CENTOS 7
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
#RHEL / CENTOS 8
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo
exit
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
sudo ACCEPT_EULA=Y yum install -y msodbcsql18
sudo ACCEPT_EULA=Y yum install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
sudo yum install -y unixODBC-devel

Trên macOS

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql17 mssql-tools

Cài đặt Microsoft Drivers for PHP for SQL Server

Trên Windows

Tải về driver tại: Drivers for PHP for SQL Server (Windows).

Giải nén và copy vào thư mục chứa các extension của PHP (ví dụ c:\php\ext). Tìm thư mục này trên Windows bằng lệnh:

php -i | sls extension_dir

Sau đó chính thiết lập PHP nạp driver (xem các driver trong thư mục tải về) bằng cách thêm vào php.ini cấu hình tương ứng với bản PHP (Ví dụ PHP 7.4)

extension=php_pdo_sqlsrv_74_ts_x64.dll
extension=php_sqlsrv_74_ts_x64.dll

Trên Linux/CentOS 7

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

Thêm vào php.ini thông tin để PHP nạp driver:

extension=sqlsrv.so
extension=pdo_sqlsrv.so

Trên macOS

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

Thêm vào php.ini thông tin để PHP nạp driver:

extension=sqlsrv.so
extension=pdo_sqlsrv.so

Đoạn code kết nối thử PHP đến SQL Server

Chú ý: Nếu sử dụng VSC để viết code, để nó gợi ý các hàm của extension này thì thiết lập như sau: Vào Settings, gõ tìm kiếm cụm từ: @ext:bmewburn.vscode-intelephense-client, dưới mục Stubs bấm vào Add item và chọn thêm: sqlsrvpdo_sqlsrv

Chuẩn bị SQL Server: bạn cần có một SQL Server đang hoạt động, nếu chưa có có thể nhanh chóng chạy một phiên bản SQL Server trên Docker để thực hành, hãy theo hướng dẫn tại: SQL Server với dữ liệu mẫu

Giả sử SQL Server có các thông tin sau:

  • Địa chỉ server: localhost hoặc 127.0.0.1
  • Cổng kết nối: 1433
  • Tài khoản: sa
  • Password: Password123
  • CSDL làm việc: xtlab

Sử dụng kết nối hướng thủ tục - SQLSRV

SQLSRV cung cấp các hàm để kết nối và làm việc với SQL Server, danh sách các hàm đó tham khảo tại: SQLSRV Functions

Dưới đây là một ví dụ kết nối và truy vấn dữ liệu SQL Server bằng PHP

Các thao tác như Update, Delete, Insert thực hiện tương tự, bạn chỉ cần viết câu lệnh SQL phù hợp và thực hiện sqlsrv_query

Sử dụng kết nối hướng đối tượng - PDO_SQLSRV

PDO_SQLSRV nó triển khai giao diện PHP Data Objects (PDO) của PHP, cung cấp chức năng truy vấn CSDL theo chuẩn PDO thống nhất (bạn thực hiện kết nối, truy vấn ... giống nhau dù là MySQL, SQLite ...). Bạn làm việc với CSDL thông qua giao lớp PDO.

Các câu truy vấn trả về đối tượng PDOStatement, từ đây gọi các phương thức tương ứng để lấy thông tin

Mặc dù bạn có thể chạy ngay câu truy vấn bằng phương thức PDO::query để trả về PDOStatement, nhưng trong các truy vấn cần truyền tham số - để an toàn bạn nên sử dụng phương thức PDO::prepare PDO::prepare, sau đó truyền tham số với PDOStatement::bindValue

Dưới đây là ví dụ sử dụng PDO_SQLSRV


Đăng ký nhận bài viết mới
Serialize trong PHP (Bài trước)
(Bài tiếp) PHP NÂNG CAO