PHP 5.4.14
SQL Server 2012/SQL 客户端 2012
Windows 2008 R2
我有一个函数(简化版本如下),我调用它来运行 SQL 查询。它工作正常:连接到数据库;运行查询并获取有效资源。问题是返回的资源为空......
function squeal($query) {
$serverName = "XXXXXXXX\SQLEXPRESS";
$uid = "private";
$pwd = "private";
$connectionInfo = array( "UID"=>$uid, "PWD"=>$pwd, "Database"=>"DBname");
/* Connect using SQL Server Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
echo "Unable to connect.</br>";
die( print_r(sqlsrv_errors(), true));
}
/* Run query */
$result = sqlsrv_query( $conn, $query, array(), array("Scrollable"=>"buffered"));
if( $result === false ) {
echo "Error in executing query.</br>";
die( print_r(sqlsrv_errors(), true));
}
/* check resource exists for debug (still fails without these lines) */
echo("Resource=".intval($result)."</br>");
echo("Has rows=".sqlsrv_has_rows($result)."</br>");
return $result;
}
$tsql = "SELECT id FROM mytable";
$fred = squeal($tsql);
echo("Resource=".intval($fred)."</br>");
echo("Has rows=".sqlsrv_has_rows($fred)."</br>");
它给出以下输出...
Resource=8
Has rows=1
Resource=8
Warning: sqlsrv_has_rows(): 8 is not a valid ss_sqlsrv_stmt resource in <path> on line 85
Has rows=
SQL 工作正常并返回有效资源。从函数返回时,它知道它已传递资源#8(在本例中),但它是空的。我对 MySQL 使用了类似的方法,效果非常好。我的整个 Intranet 应用程序依赖于能够调用函数来运行查询并获取资源。
将函数保留在 sqlsvr/ODBC 中时,资源是否会“死亡”?当然不是。
我花了几天时间在谷歌上寻找答案,但只能让 SQL Server 在函数之外工作。如果有任何建议,我将不胜感激
Cheers