在 Windows 上将 PHP 连接到 SQL Server

Posted

技术标签:

【中文标题】在 Windows 上将 PHP 连接到 SQL Server【英文标题】:Connect PHP to SQL Server on windows 【发布时间】:2019-10-07 18:46:39 【问题描述】:

我正在尝试使用 php 连接到 SQL Server (MSSQL) 数据库。我激活了 DBO 插件并尝试使用它,但是当我定义对象并运行代码时出现错误:Connection failed: could not find driver 。从我的代码中可以看出,我已经验证了 dbo 驱动程序已加载。 我下载了答案之一中链接到的 sqlsrv 驱动程序,但我仍然无法连接。我错过了什么? (index.phpsubmit.php 这两个文件在同一个目录中,这就是整个项目)((我在 Windows 计算机上,但这可能相关也可能不相关))

index.php:

<html>
<head>

</head>
<body>
  <form class="my-form" action="submit.php">
      <input type="text" name="field" />
      <input type="submit" value="Submit" />
  </form>
</body>
</html>

提交.php:

<html>
<head>
</head>
<body>
<h1>page loaded</h1>
<h1><?php if (extension_loaded('pdo')) 
    echo 'pdo extension loaded by php';
 ?></h1>

<?php
$myServer = "xxxxxxxxxxxxxxxx";
$myUser = "xxxxxxx";
$myPass = "xxxxxx";
$myDB = "xxxxxxxxxxxx";


$serverName = $myServer; //serverName\instanceName

// Since UID and PWD are not specified in the $connectionInfo array,
// The connection will be attempted using Windows Authentication.
$connectionInfo = array( "Database"=>$myDB, "UID"=>$myUser, "PWD"=>$myPass);
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) 
     echo "Connection established.<br />";
else
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));



?>
</body>
</html>

【问题讨论】:

检查服务器错误日志中是否有任何错误消息。 您确定在服务器上安装了mssql_connect 扩展吗?如果没有,请与您的网络管理员联系以进行安装。 Lars 在下面的答案中引用的 php.net 文章说 mssql 扩展已在 php7 中删除。他推荐使用 PDO... PDOException “could not find driver”的可能重复 @ivan_pozdeev 不,这是 pdo 和 ms sql,不是 mysql 【参考方案1】:

在 PHP 7 中删除了 mssql* 扩展。

https://www.php.net/manual/en/function.mssql-connect.php

您应该考虑使用 PDO。

编辑:

用于 MSSQL 的 PDO 需要适当的客户端库,您可以在此处找到: https://docs.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-2017

不要让自己被版本号弄糊涂了(它不是 PHP 版本...)查看说明,一些驱动程序仅适用于特定的 MSSQL 服务器版本。

还请注意示例: https://docs.microsoft.com/en-us/sql/connect/php/download-drivers-php-sql-server?view=sql-server-2017

【讨论】:

好的,功能肯定消失了,谢谢。我更新了上面的问题,以显示我是如何更改代码的。 好的,我也更新了我的答案。希望对您有所帮助;) ugg 我下载了上面提到的驱动程序,但它仍然无法正常工作,所以我更新了上面的问题。为什么我仍然无法连接并收到该错误? 不幸的是没有修复它,我仍然收到相同的错误“找不到驱动程序”。可能是我驱动安装错了?我从上面的链接下载了“php_sqlsrv_72_nts_x64”文件,将该名称的dll文件放入PHP扩展目录,将extension=php_sqlsrv_72_nts_x64添加到ini文件的[extensions]部分,然后重新启动计算机。 PDO 扩展被加载,这一事实在上面的代码中得到验证。我安装的唯一一个我无法用代码验证的“驱动程序”是那个,所以我是否正确地进行了安装? 好的,我修复了它并让它工作。我将在上面更新我的代码。我只是没有在连接信息数组 np 中指定用户和密码。谢谢,我将您的答案标记为解决方案。谢谢你的一切!

以上是关于在 Windows 上将 PHP 连接到 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章

在 jenkins 上将 windows 7 slave 连接到 debian master 的问题

如何在 Mac 上将 ASP.Net Core 连接到 SQL Server Docker 容器

在IIS7中通过PHP连接到SQL SERVER 2008(使用Windows身份验证)?

使用 PHP 在运行 Windows Server 2012 的物理服务器上连接到 SQL Server 2012

Apache 不会使用 PHP 连接到 SQL Server

如何从 PHP 5.4 连接到 MS SQL 2000?