在PHP中,如果要连接SQL Server数据库,可以使用以下几种驱动:
* **Mssql** * **PDO_SQLSRV (Windows only)** * **PDO_ODBC** * **SQLSRV** (Windows only) * Unified ODBC API
上述内容是复制于官网(03/11/2019)。
但是,实际情况会更复杂一些,尤其是PDO_SQLSRV与SQLSRV,它俩不光是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