「PHP」- 连接SQL Server数据库

  CREATED BY JENKINSBOT

在PHP中,如果要连接SQL Server数据库,可以使用以下几种驱动:

	* **Mssql**
	* **PDO_SQLSRV (Windows only)**
	* **PDO_ODBC**
	* **SQLSRV** (Windows only)
	* Unified ODBC API

上述内容是复制于官网(03/11/2019)。

但是,实际情况会更复杂一些,尤其是PDO_SQLSRVSQLSRV,它俩不光是Windows only的。

# SQLSRV – Microsoft SQL Server Driver for PHP

SQLSRV: http://php.net/manual/en/book.sqlsrv.php

PHP -> SQLSRV -> SQLSERVER

在Windows上运行PHP时,该扩展允许您访问Microsoft SQL Server和SQL Azure数据库。版本3.0的驱动程序支持SQL Server(从SQL Server 2005开始,包括SQL Server 2012,SQL Server 2012 LocalDB)。

有关LocalDB的更多信息,参考「PHP Driver for SQL Server Support for LocalDB and » SQL Server 2012 Express LocalDB

由Microsoft支持SQLSRV扩展,可在此处下载:http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx

可以在此处下载SQL Server 2012 LocalDB:http://go.microsoft.com/fwlink/?LinkID=237665

!!!上面都是PHP官网的话!!!

但你去看Microsoft的手册,你会发现它的SQLSRV也支持Linux和macOS的,因为它有个「GitHub/msphpsql」项目,同时包含了SQLSRV和PDO_SQLSRV驱动。

# PDO_SQLSRV – Microsoft SQL Server Functions

PDO_SQLSRV: http://php.net/manual/en/ref.pdo-sqlsrv.php

PHP -> PDO -> PDO_SQLSRV -> SQLSERVER

它是一个实现「PHP数据对象(PDO)」接口的驱动程序,用于创建从PHP到MS SQL Server(从SQL Server 2005开始)和SQL Azure数据库的访问。

同时支持Windows和Linux平台,在上面的「SQLSRV」部分中已经简单介绍了。

# Mssql – Microsoft SQL Server

Mssql: http://php.net/manual/en/book.mssql.php

PHP -> MSSQL -> SQLSERVER

访问MS SQL Server数据库的驱动。

在Windows上,此扩展程序PHP 5.3+的版本不可用。

在Linux上,在PHP 7.0.0中删除了此功能。

SQLSRV是Microsoft SQL连接的替代扩展,可从Microsoft获得。

# PDO_DBLIB – Microsoft SQL Server and Sybase Functions

PDO_DBLIB: http://php.net/manual/en/ref.pdo-dblib.php

PHP -> PDO -> PDO_DBLIB -> FreeTDS -> SQLSERVER

它是一个实现「PHP数据对象(PDO)」接口的驱动程序,可通过FreeTDS库从PHP访问Microsoft SQL Server和Sybase数据库。

在Windows上,此扩展程序在PHP 5.3+版本后不可用,应该使用SQLSRV驱动。

因为原始的Windows DB-LIB是古老、线程不安全、不再受Microsoft支持,如果无法使用SQLSRV驱动,则可以使用PDO_ODBC驱动程序连接到Microsoft SQL Server和Sybase数据库。

# PDO_ODBC – ODBC and DB2 Functions

PDO_ODBC: http://php.net/manual/en/ref.pdo-odbc.php

PHP -> PDO -> PDO_ODBC -> ODBC/DB2 CLI -> SQLSERVER

它是一个实现「PHP数据对象(PDO)」接口的驱动程序,用于通过「ODBC驱动程序」或通过「IBM DB2调用层接口(DB2 CLI)库」来从PHP访问数据库。

它目前支持三种不同的“风格”的数据库驱动程序:ibm-db2、unixODBC、generic

在Windows上,必须在php.ini中启用php_pdo_odbc.dll作为扩展名。 它与Windows ODBC驱动程序管理器链接,以便PHP可以连接到任何数据库,它是连接到Microsoft SQL Server数据库的推荐驱动程序。

使用起来挺麻烦的,可以参考PHP官网的示例:「Ariz Jacinto

ODBC(Unified) – Unified ODBC API

Unified ODBC API: http://php.net/manual/en/book.uodbc.php

除了正常的ODBC支持之外,PHP中的Unified ODBC函数还允许你访问几个借用了ODBC API语义的数据库来实现自己的API。这些驱动程序已经统一为一组ODBC函数,而不是维护几乎完全相同的多个数据库驱动程序。

Unified ODBC功能支持以下数据库:Adabas D,IBM DB2,iODBC,Solid,Sybase SQL Anywhere

这个也需要修改ODBC的配置文件,连接方法参考官方示例:「Example #1 DSN-less connections

参考文献

PHP Manual/ Function Reference/ Database Extensions/ Vendor Specific Database Extensions/ Mssql