PHP Sql Server PDOException:找不到驱动程序

Sor*_*ren 7 php sql-server php-extension php-ini

我的服务器是Windows 2008服务器.PHP V7.2.7已安装并正在运行.Sql Server 11(64位)已安装并正在运行(有几个asp.net应用程序在运行且已经在使用该数据库)

我从Microsofts网站下载了PHP Sql Server驱动程序,并将.dll文件放在PHP ext目录中.

在我的PHP.ini中,我添加了:extension=php_pdo_sqlsrv_7_nts_x64

在我的.php文件中,我用来测试我的数据库连接:

 $SqlServer = "THISSERVER\SQLEXPRESS";
 $SqlServerCon = new PDO("sqlsrv:server=$SqlServer;Database=TheDatabase", "DbUName", "DbPassword"); 
if (!$SqlServerCon) {die('Unable To Connect to Sql Server');}
else
{echo "Connection Successful";}     
Run Code Online (Sandbox Code Playgroud)

我得到:( PHP Fatal error: Uncaught PDOException: could not find driver in D:\Inetpub\wwwroot\TechStory2\DBtest.php:7第7行是$ SqlServerCon行).

我做错了什么?以及如何建立与Sql Server的连接需要做什么?

Sor*_*ren 5

我明白了。我必须在我的服务器上安装 SQL Server 的 ODBC 驱动程序 17 (msodbcsql_17.2.0.1_x64.msi)。已安装 SQL Server Native Client 11.0,但未安装 SQL Server 的 ODBC 驱动程序。

供其他遇到此问题或类似问题的人将来参考......

可以从https://www.microsoft.com/en-us/download/details.aspx?id=56567下载(注意:如果您有 32 位服务器,则需要安装 msodbcsql_17.2.0.1_x86 .msi - 如果您不小心尝试安装不正确的版本,它会在安装过程中通知您)。安装驱动程序后,需要重新启动服务器。它不会提示您重新启动,但您需要重新启动。

在我的 PHP.ini 中,我添加了它们extension=php_pdo_sqlsrv_72_nts.dll,可以在https://learn.microsoft.com/en-us/sql/connect/php/system-requirements-for-the-php-sql-driver?view=extension=php_sqlsrv_72_nts_x64.dll下载sql-server-2017

更多信息请访问https://learn.microsoft.com/en-us/sql/connect/php/loading-the-php-sql-driver?view=sql-server-2017https://learn。 microsoft.com/en-us/sql/connect/php/system-requirements-for-the-php-sql-driver?view=sql-server-2017

我现在可以使用 sqlsrv_connect 或 PDO 建立与 Sql Server 的连接。

PDO连接测试:

$SqlServer = "THISSERVER\SQLEXPRESS";
$SqlServerCon = new PDO("sqlsrv:server=$SqlServer;Database=TheDatabase", "DbUName", "DbPassword"); 
if (!$SqlServerCon) {die('Unable To Connect to Sql Server');}
else
{echo "Connection Successful";} 
Run Code Online (Sandbox Code Playgroud)

sqlsrv_connect 连接测试:

$SqlServer = "THISSERVER\SQLEXPRESS";
$DbConnInfo = array( "Database"=>"TheDatabase", "UID"=>"DbUName", "PWD"=>"DbPassword");
$SqlServerCon = sqlsrv_connect( $SqlServer, $DbConnInfo);
if( $SqlServerCon ) {echo "Connection established";}
else
{echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));}
Run Code Online (Sandbox Code Playgroud)