2017-08-16 41 views
0

我是PHP新手。 PHP已安装并正在运行,现在我正尝试设置与SQL Server数据库的连接。遵循Youtube视频的指示。通过并完成安装驱动程序,但它不起作用。调用sqlsrv_connect()函数后,我的测试页停止运行代码。我甚至没有收到错误信息。下面是我的测试页面代码:在PHP中安装SQL Server驱动程序

<?php 

echo '<br><span style="font-weight:bold;">PHP functioning. This line is being echoed out.</span><br />'; 
/*No problems yet...*/ 

$serverName = "Myserver"; 
$connectionInfo = array('Database'=>'nde', 'UID'=>'sa', 'PWD'=>'!hegEcu&3ATr'); 
$conn = sqlsrv_connect($serverName, $connectionInfo); 
/*Nothing is appearing on the screen after this */ 

echo 'Still working...<br />'; 


if ($conn) { 
    echo 'Connection established.<br />'; 
} else { 
    echo 'Nope.<br />'; 
    die(print_r(sqlserv_errors(), TRUE)); 
} 

?> 

我运行PHP 7.0.21和SQL Server 2014年我去了,下载了两个DLL文件我想我需要 - php_pdo_sqlsrv_7_ts_x64.dll和php_sqlsrv_7_ts_x64.dll。我将它们复制到Program Files/PHP/v7.0/ext。我以管理员身份进入PHP.ini,并在Windows扩展部分输入: extension = php_pdo_sqlsrv_7_ts_x64.dll
extension = php_sqlsrv_7_ts_x64.dll
。我保存了PHP.ini,重新启动了IIS管理服务和万维网发布服务,然后进入IIS管理器并重新启动服务器。 PHP仍在工作,但在sqlsrv_connect()调用之后,我仍然没有收到任何回显。

+1

使用nts版本的DLL。此外,由于您已安装PDO扩展,请使用PDO而不是'sqlsrv_connect' – ctwheels

+0

[如何获取PHP错误以显示?](https://stackoverflow.com/questions/1053424/how-do-i-get- PHP-错误到显示器)。但是PHP扩展并不是一个独立的解决方案,你仍然需要微软的适当驱动。 –

+0

为什么使用非线程安全版本?为什么使用PHP数据对象而不是sqlsrv_connect()? – Cmaso

回答

0

好吧,我明白了。按照ctwheels的建议,我只安装了nts驱动程序版本,而不是ts版本,它们是php_pdo_sqlsrv_7_nts_x64.dll和 extension = php_sqlsrv_7_nts_x64.dll。它使用sqlsrv_connect();我还没有尝试过使用PDO。我是PHP新手,并不熟悉PDO,但我可能会再次遇到它,特别是当我开始研究PHP框架(Cake和CodeIgniter)时。

对于任何可能是PHP新手的人来说,共享一个重要的东西 - PHP文档说sqlsrv_connect()的$ serverName参数应该是servername/instancename的格式。所以我用这个查询来得到两个:select @@ servername +'\'+ @@ servicename,并得到“Myserver \ MSSQLServer”。但是,将此用作$ serverName参数会导致连接失败。只有在我拿出“\ MSSQLServer”后才成功连接。因此,在上面的代码中,要使用的正确值是$ serverName =“Myserver”。

相关问题