PHP - 我如何知道为什么 mssql_connect() 不起作用?

标签 php sql-server

我使用的是 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/

相关文章:

php-login 项目(最小)数据库连接问题

sql-server - SQL Server 中的表数据类型回滚有何影响?

sql-server - Sql Server维护计划中的重组索引与重建索引

php - 如何安全地将数据传输到服务器?

java - 使用Android将SD卡中任何文件夹中的任何文件上传到服务器

sql - 有没有办法 SQL ORDER BY 列 ASCENDING 与 ORDER BY 之上的某些结果?

sql - 将表变量与 sp_executesql 一起使用

sql - 如何设置 SSIS 以从 Postgres 数据库中提取数据

javascript - 单击按钮从 Div 复制到输入框

php - 无法将opencart连接到mySQL数据库