我尝试通过PHP7 sqlsrv驱动程序连接到MS SQL Server。 看起来我的浏览器试图执行:
$conn = new PDO( "sqlsrv:Server=$serverName;Database=mydb", $uname, $pass);
或
$conn = sqlsrv_connect( $serverName, $connectionInfo);
它只是挂起。没有收到成功或失败的回声/骰子消息。相反,我的浏览器中的滚轮一直在旋转,状态消息是"等待localhost"。它似乎也没有超时。我等了10多分钟,连接永远不会失败/成功。
完整代码(我已尝试过程序和PDO方法):
<?php
//
$serverName = "myserver\myinstance"; //serverName\instanceName
$uname = "myuser";
$pass = "mypass";
$connectionInfo = array( "Database"=>"mydb", "UID"=>$uname, "PWD"=>$pass);
/*Procedural sqlsrv method
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
die("DONE");
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
*/
/*PDO sqlsrv method*/
try {
$conn = new PDO( "sqlsrv:Server=$serverName;Database=mydb", $uname, $pass);
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
die("success!");
} catch(PDOException $e) {
die($e->getMessage());
}
?>
设置详情和其他信息:
我之前遇到过&#34;未定义函数sqlsrv_connect()&#34;直到我安装
php_sqlsrv_7_ts_x86.dll
和
php_pdo_sqlsrv_7_ts_x86.dll
进入我的php / ext文件夹并更新了php.ini。当我打开phpinfo时,我在&#34;注册的PHP Streams&#34;中看到了sqlsrv。和#34; PDO驱动程序&#34;字段。
我应该怎样做才能获得成功的连接或获取有关我的连接尝试未成功/失败的原因的更多信息?
编辑: 我已切换到XAMPP(PHP 5.6.24)。我现在可以通过CLI连接到SQL Server,但无法通过PHP-CGI连接(通过浏览器/由Apache HTTPD提供)。我已经通过php_info()再次验证sqlsrv和PDO扩展已成功加载。我现在正在浏览PHP-CGI和PHP CLI之间的差异,看看可能导致问题的原因。
编辑: 我现在使用IIS而不是Apache,并且能够通过sqlsrv连接而不会出现问题。不是解决方案,而是解决问题的方法。
答案 0 :(得分:0)
尝试:
try {
$db = new PDO( 'sqlsrv:server=serwer_name;Database=database_name', 'user', 'password');
} catch (PDOException $e) {
echo $e->getMessage();
}