在 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.php
和 submit.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