我正在使用当前代码尝试访问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
您认为问题是什么?
答案 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
清楚地解释了正确的安装步骤安装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次刷新 现在已连接。 我希望它非常有用