【问题标题】:Connect PHP to SQL Server on windows在 Windows 上将 PHP 连接到 SQL Server
【发布时间】: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...
  • @ivan_pozdeev 不,这是 pdo 和 ms sql,不是 mysql。

标签: php sql sql-server windows


【解决方案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 中指定用户和密码。谢谢,我将您的答案标记为解决方案。谢谢你的一切!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多