PHP 5.4.14 的SQL Server 2012/SQL客戶端2012 的Windows 2008 R2PHP SQLSRV:從一個函數傳遞一個資源
我有一個函數(簡化版本如下),我打電話來運行SQL查詢。它工作正常:連接到DB;運行查詢並獲取有效的資源。問題是,被返回的資源是空...
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服務器在一個函數外工作。我將不勝感激任何建議
乾杯
一個函數沒有考慮輸出值...只是爲了返回值...只是一個提示;) –