无法通过PHP连接到msSQL数据库

时间:2009-01-22 17:01:10

标签: php sql sql-server sql-server-2005 connection

我正在使用当前代码尝试访问msSQL 2005 db:

<?php
$myServer = "[server]";
$myUser = "[username]";
$myPass = "[password]";
$myDB = "[db]";

//connection to the database
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
  or die("Couldn't connect to SQL Server on $myServer");

//select a database to work with
$selected = mssql_select_db($myDB, $dbhandle)
  or die("Couldn't open database $myDB");

//declare the SQL statement that will query the database
$query = "SELECT id, name, year ";
$query .= "FROM cars ";
$query .= "WHERE name='BMW'";

//execute the SQL query and return records
$result = mssql_query($query);

$numRows = mssql_num_rows($result);
echo "<h1>" . $numRows . " Row" . ($numRows == 1 ? "" : "s") . " Returned </h1>";

//display the results
while($row = mssql_fetch_array($result))
{
  echo "<li>" . $row["id"] . $row["name"] . $row["year"] . "</li>";
}
//close the connection
mssql_close($dbhandle);
?>

它返回以下内容:

Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: XXXXXXX in D:\xxxxx.xxx\xxxx.php on line 16
Couldn't connect to SQL Server on XXXXXXX

您认为问题是什么?

9 个答案:

答案 0 :(得分:5)

听起来像你的一个DLL是错误的版本。从SQL2000到SQL2005的转变存在某种问题,即PHP的创建者没有解决自己。这里有各种各样的帖子:the following link

我认为DLL是ntwdblib.dll,版本至少需要版本2000.80.194.0。如果您正在运行Apache或WampServer,则存在一个相同的dll,其中存储需要覆盖的Apache DLL。

注意:几天前我遇到了这个问题并找到了正确的DLL并覆盖它们,这使得它能够正常工作。

另外:您可能需要设置远程连接。 Sql Server 2005默认禁用远程连接。您可以通过运行SQL Surface Area Configuration实用程序来允许远程连接。

答案 1 :(得分:4)

尝试调用mssql_get_last_message()以获取最后一条错误消息:

$dbhandle = mssql_connect($myServer, $myUser, $myPass)
  or die("Couldn't connect to SQL Server on $myServer. Error: " . mssql_get_last_message());

答案 2 :(得分:1)

停止使用

  

mssql_connect

并开始使用

  

sqlsrv_connect

这将为您节省很多麻烦。另外,函数* mssql_connect *已被弃用。

对于使用sqlsrv_connect,您必须下载驱动程序并将其安装为PHP的扩展,以识别 sqlsrv 函数。从Microsoft下载中心下载驱动程序(搜索“sql server php driver”),在本文发布时,下载URL为:http://www.microsoft.com/en-us/download/details.aspx?id=20098

Microsoft自己在http://www.microsoft.com/en-us/download/details.aspx?id=20098

清楚地解释了正确的安装步骤
  1. 下载驱动程序。 2.将它放在PHP ext文件夹中。 3.更新php.ini 4.重新启动服务器。
  2. 安装sql server驱动程序后,只需按照http://www.php.net/manual/en/function.sqlsrv-connect.php中的说明操作即可。下面是一个快速摘要:

    <?php
    $serverName = "serverName\sqlexpress"; //serverName\instanceName
    
    // Since UID and PWD are not specified in the $connectionInfo array,
    // The connection will be attempted using Windows Authentication.
    $connectionInfo = array( "Database"=>"dbName");
    $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));
    }
    ?>
    

    投票!

答案 3 :(得分:0)

凭据无效,如果您未使用localhost,请确保将服务器的ip添加到安全列表中。

答案 4 :(得分:0)

几个月前我遇到了一些困难,我发现使其工作的唯一方法是在指定服务器时包含实例名称。例如:

$myServer = "SERVER\INSTANCENAME";

即使启用了TCP / IP,仅指定服务器也不起作用。

答案 5 :(得分:0)

首先尝试在浏览器上执行phpinfo()之类的操作,而不是查看允许的数据库。

如果您没有看到mssql之类的内容,则表示未配置。因此,请使用将要配置的odbc_connect() ...您的连接字符串将如下所示:

$server = '';
$user = '';
$password = '';
$database = '';
$connection = odbc_connect("Driver={SQL Server Native Client `11.0};Server=$server;Database=$database;", $user, $password);`

如果您使用的是mssql 2005或2008,则将d 11.0更改为10.0,对于其他版本,只需更改为mssql的版本。

答案 6 :(得分:0)

在此网站http://www.microsoft.com/en-us/download/details.aspx?id=20098下载驱动程序,然后打开您的php.ini文件并添加您下载的DLL。

答案 7 :(得分:0)

迟到的回复,但它可能对某人有所帮助。  我们快到了,这是你的连接参数的问题, 可能您需要将服务器名称设为opencv_imgcodecs300d.lib

servername :: MS SQL服务器。例如IP:port

服务器名称应为“server \ instance”    实例只是不同于1433的特定端口地址...所以只需发现mssql服务器上的端口,然后尝试使用以下连接进行连接:hostname:port (Linux), or hostname,port (Windows).

对我来说完全正常的示例代码::

ip:port

希望这有助于一个人:) 快乐的编码!!

答案 8 :(得分:-1)

如果您使用的是Windows 10。

步骤1.单击开始按钮

步骤2.输入服务,然后输入(打开App Services)

步骤3.查找-SQL Server(MSSQLSERVER)

第4步。右键单击->选择“属性”

步骤5.显示弹出窗口。您选择第二个标签(登录)

步骤6.选择本地系统帐户

第7步,并选中允许服务与桌面交互

第8步,最后单击确定。

1次刷新 现在已连接。 我希望它非常有用