我使用的是 PHP 5.2,通常 mssql_connect
工作正常 - 但我正在尝试连接到新的 MS SQL 服务器,但它无法连接。我的连接详细信息或凭据可能有问题,但我无法判断,因为我无法收到错误消息。
mssql_connect()
方法返回 false,没有可用的连接。
mssql_get_last_message()
不返回任何内容 - 那么我该如何判断连接失败的原因?
有人有什么想法吗?
在 MySQL 中,我会使用 mysql_error
- 但似乎没有 ms_sql 的等效项。
[编辑]
这个问题不是“MSSQL_CONNECT returns nothing - no error but no response either”的重复 - 我使用的是 php 5.2,并且代码对于其他连接细节工作正常。我需要弄清楚如何输出连接错误是什么 - 而不是连接的问题。
[EDIT2]
澄清一下:
- 服务器上启用了扩展
- 代码适用于现有的连接细节
- 我正在使用新的连接详细信息,不知道主机名或密码是否错误
- 我知道代码没有连接,因为我检查它是否已连接
- 我想找出连接错误 - 就像使用 MySQL 一样。
示例代码如下:
$db_connection = mssql_connect($host, $user, $pass);
$db = mssql_select_db($dbname, $db_connection);
if (!$db_connection) {
echo "No connection";
echo "connection failed because: " . ???????;
die;
}
我应该用什么代替 ????????
来获取连接错误消息?
最佳答案
//Database Connection by PDO (MS SQL Server, PHP)
$serverName='localhost';
$database='TreeDB';
$uid='sa';
$pwd='sa*5234';
$dbo = new PDO("sqlsrv:server=$serverName ; Database = $database;ConnectionPooling=0", $uid, $pwd);
//var_dump($dbo);
//Database Query
$sql = "SELECT node.id, node.name, COUNT(parent.id) - 1 AS depth, node.lft, node.rgt
FROM dbo.OrgTree AS node CROSS JOIN dbo.OrgTree AS parent
WHERE (node.lft BETWEEN parent.lft AND parent.rgt)
GROUP BY node.id, node.name, node.lft, node.rgt
ORDER BY node.lft";
//Execute Query
$sql = $dbo->prepare($sql);
$sql->execute();
$qry = $sql->fetchAll();
foreach ($qry as $fetch)
{
$tree[] = $fetch;
}
//print_r($tree);
关于PHP - 我如何知道为什么 mssql_connect() 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23405791/