SQL 服务器未连接或抛出错误

SQL Server not Connecting nor Tossing Errors

我在工作时正在尝试连接到一个已经建立的数据库。我们无法访问后端,但我们确实有服务器地址和登录信息可以连接到它——去年我能够使用 PDO 和 dblib 连接,但是 dblib 在 PHP 7 所以我正在尝试使用 sql 服务器驱动程序。

我设置了一个基本的连接字符串来测试它,但没有收到任何指定的错误,也没有收到任何结果:

<?php
    //Display All Errors
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);

    echo "Test1";

//Try the Connection
try {
    //Connection Variables
    $server = "11.123.123.123, 1234";
    $database = 'myDatabase';
    $username = "myUsername";
    $password = "myPassword";

    //Connection String
    $conn = new PDO ("sqlsrv:Server=$server;Database=$database","$username","$password");

    //Initiating Error Detection
    $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );   
}  

//Catch exceptions to the Try
catch(Exception $e)  {   
    echo "Test3";
    die( print_r( $e->getMessage() ) );   
}  

//Prepare SQL Statement
$stmt = $conn->prepare("SELECT * FROM WorksheetPriceChangeData");

//Execute SQL Statement
$stmt->execute();
    while ($row = $stmt->fetch()) {
      print_r($row);
    }
    echo "Test4";
?>

(用于敏感信息的占位符)。此代码生成一个空白页面,在顶部显示 "Test1" 回显。我的 PHO 日志中没有错误,phpinfo() 显示 sqlsrv PDO 和 sqlsrv 扩展名 (4.0.8629.3) 处于活动状态,如果我使用伪造的服务器地址(如 11.123. 123.123) 它做同样的事情。

我还要补充一点,我在 Windows Server 2012 R2 上,数据库显示在数据源管理器中。它连接成功并检查了 "With Windows NT authentication using the network login ID" 和 "Connect to SQL Server to obtain default settings for the additional configuration options"。

我将不胜感激就此提供的任何指导或想法。即使没有错误消息或日志也很难继续。

亲切的问候, 本大卫

此连接适用于 Windows PHP 5.X-7.X 中的 Windows Server 2012 R2(x86 架构中的 PHP 版本 运行模式)。

在 IIS 中全新安装时,您可能首先需要将 PHP 的版本更改为 5.X 或 7.X(x86 架构版本 7.0 需要与我们正在使用的 Sybase 数据库)进入 >IIS 管理器 >PHP 管理器并选择 "Change PHP Version"。在此之后,可能需要通过 运行 ODBC 数据源 32 位可执行文件创建一个 ODBC DSN,并创建一个名为 "myConnection" 的连接(如果名称不同,则需要在下面调整变量).此连接需要使用 SQL Anywhere 12 驱动程序创建。需要使用与数据库凭据匹配的服务器名称和数据库名称创建连接。

接下来转到 IIS 管理器 > 身份验证。 Select "Anonymous Authentication",单击 "Edit" 并确保选中 "Application Pool Identity"。

在此之后,您需要通过安装和启动 odbc_pdo driver/extension 配置 PHP 以使用 DSN。首先确保 php_pdo_odbc.dll 文件位于您正在使用的版本的主 PHP 目录之外的 /ext 目录中(确保您在 "Program Files (X86)" 文件夹中进行这些调整,或者否则你正在调整现在不活动的 x64 PHP 版本) - 或者如果它不在那里下载它。文件位于目录中后,编辑主 PHP 目录中的 php.ini 文件,在文件末尾的扩展块中包含以下扩展行:extension=php_pdo_odbc.dll。重新启动计算机,现在应该启用 odbc_pdo 驱动程序。下面的连接脚本现在应该可以工作并打印该数据库的系统对象数组。

    <?php       
        //---Display All Errors
        ini_set('display_errors', 1);
        ini_set('display_startup_errors', 1);
        error_reporting(E_ALL);

        echo "Boom! <br /><br />";

        //---Try the Connection
        try {

            //Connection Variables
            $dsn = "odbc:myConnection";
            $username = "myUsername";
            $password = "myPassword";

            //Connection String
            $conn = new PDO($dsn, $username, $password);

            //Initiating Error Detection
            $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );   
        }

        //---Catch exceptions to the Try
        catch(Exception $e)  {   
            echo "Invalid Connection";
            //Print Error Messages
            die( print_r( $e->getMessage() ) );   
        }  

        //---SQL Statement(s)
        $stmt = $conn->prepare("SELECT * FROM sysobjects WHERE type = 'U'");

        //---Execute SQL Statement
        $stmt->execute();
            while ($row = $stmt->fetch()) {
              print_r($row);
                echo "<br />";
            }

        echo "<br />Connected Successfully";
    ?>