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";
?>
我在工作时正在尝试连接到一个已经建立的数据库。我们无法访问后端,但我们确实有服务器地址和登录信息可以连接到它——去年我能够使用 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";
?>