如何使用sqlsrv api在PHP中连接到MSSQL?
我正尝试使用sqlsrv api在PHP中连接到MSSQL。当我运行phpinfo()时,它显示sqlsrv的部分。但在实际编写代码时,我无法连接到MSSQL。我正在使用SQL Server R2。我使用指定的主机名从Management Studio连接到数据库。这里是代码:如何使用sqlsrv api在PHP中连接到MSSQL?
<?php
$serverName = "TEST-PC\SQLEXPRESS";
$databaseName = "TestDB";
$connectionInfo = array("Database"=>"$databaseName");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if($conn === false){
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
else{
echo "Connection created";
}
$tsql = "SELECT * FROM Test";
$result = sqlsrv_query($conn, $tsql);
echo "Rows returned: ".sqlsrv_num_rows($result);
sqlsrv_close();
?>
该代码在页面上打印没有什么,甚至没有任何错误消息。这里是在php.ini文件中的条目:
extension=php_sqlsrv_53_ts_vc9.dll
extension=php_pdo_sqlsrv_53_ts_vc9.dll
请帮忙吗?
你是不是想把“$ connectionOptions”放在你有“$ connectionOptions”的地方?
Turn on error_reporting for php for more verbose output.
[编辑]
一些不可能性的解决方案:
- 检查您的连接字符串属性要连接到MSSQL数据库(即你精确匹配值,或者你可以使用(本地)
- 你可能登录的用户没有适当的数据库访问权限,听起来像是过分简化了,但是检查你的IIS设置以及FastCGI.impersonate设置。打开IIS中的IIS Windows身份验证设置,fastcgi.impersonate = 1。有这个潜在的问题在这里彻底的文章:http://blogs.msdn.com/b/brian_swan/archive/2010/02/10/sql-server-driver-for-php-understanding-windows-authentication.aspx
对不起........误印**这里**。它是$ connectionInfo,而不是实际代码中的$ connectionOptions。 –
您可以在本地连接到您的数据库,它使用Windows身份验证或用户名/密码吗?如果是后者,那么你需要在你的$ connectionInfo中包含这个 –
另外,确保你的SQL服务器正在运行 –
既然你没有通过一个用户名或密码,司机正试图通过连接Windows身份验证。通过从IIS运行PHP,它将连接任何用户IIS运行的凭据(例如NT AUTHORITY \ IUSR)。您需要将IIS用户添加到允许登录到SQL Server的列表中,然后将与该登录关联的用户添加到数据库。
这是因为sqlsrv_query()默认使用SQLSRV_CURSOR_FORWARD游标类型。然而,为了得到sqlsrv_num_rows(),你应该选择下面这些游标类型的一个结果:
SQLSRV_CURSOR_STATIC SQLSRV_CURSOR_KEYSET SQLSRV_CURSOR_CLIENT_BUFFERED
欲了解更多信息,请查看:Cursor Types (SQLSRV Driver)
总之,试试这个代码:
$tsql=sqlsrv_query("SELECT * FROM Test"); $row_count = sqlsrv_num_rows($tsql); echo $row_count;
对不起,忘了提及我在IIS 7上运行的网站nd不在Apache上。 –