1
我有一些PHP和MSSQL是我的工作一個非常奇怪的問題。我正在使用存儲過程來檢索用戶剛剛存儲到數據庫中的信息,以便他們可以打印出他們輸入的記錄。MSSQL存儲過程有行,但mssql_num_rows返回0
起初我是有獲得頭詳情可顯示在屏幕上的問題,因此最終改變的代碼由$ skip_results設置布爾到真正的工作。這意味着我不得不再次調用存儲過程而沒有設置來獲取關聯的信息行。
這裏就是我所做的:
//populate header with order information - this one uses true in the mssql_execute in order to return all the output variables
/* prepare the statement resource */
$confirmationstmt=mssql_init("stored-procedure-name", $link);
/* now bind the parameters to it */
mssql_bind($confirmationstmt, "@var1", $var1, SQLVARCHAR, FALSE);
mssql_bind($confirmationstmt, "@var2", $var2, SQLFLT8, TRUE);
mssql_bind($confirmationstmt, "@var3", $var3, SQLVARCHAR, TRUE);
mssql_bind($confirmationstmt, "@var4", $var4, SQLVARCHAR, TRUE);
mssql_bind($confirmationstmt, "@var5", $var5, SQLVARCHAR, TRUE);
mssql_bind($confirmationstmt, "@var6", $var6, SQLVARCHAR, TRUE);
mssql_bind($confirmationstmt, "@var7", $var7, SQLVARCHAR, TRUE);
mssql_bind($confirmationstmt, "@var8", $var8, SQLINT4, TRUE);
mssql_bind($confirmationstmt, "@var9", $var9, SQLVARCHAR, true);
mssql_bind($confirmationstmt, "@var10", $var10, SQLFLT8, true);
mssql_bind($confirmationstmt, "@var11", $var11, SQLFLT8, true);
mssql_bind($confirmationstmt, "@var12", $var12, SQLFLT8, true);
mssql_bind($confirmationstmt, "@var13", $var13, SQLFLT8, true);
// now execute the procedure
$confirmationresult = mssql_execute($confirmationstmt, true);
//populate header with order information - this one uses true in the mssql_execute in order to return all the output variables
/* prepare the statement resource */
$numlinesstmt=mssql_init("stored-procedure-name", $link);
/* now bind the parameters to it */
mssql_bind($numlinesstmt, "@var1", $var1, SQLVARCHAR, FALSE);
mssql_bind($numlinesstmt, "@var2", $var2, SQLFLT8, TRUE);
mssql_bind($numlinesstmt, "@var3", $var3, SQLVARCHAR, TRUE);
mssql_bind($numlinesstmt, "@var4", $var4, SQLVARCHAR, TRUE);
mssql_bind($numlinesstmt, "@var5", $var5, SQLVARCHAR, TRUE);
mssql_bind($numlinesstmt, "@var6", $var6, SQLVARCHAR, TRUE);
mssql_bind($numlinesstmt, "@var7", $var7, SQLVARCHAR, TRUE);
mssql_bind($numlinesstmt, "@var8", $var8, SQLINT4, TRUE);
mssql_bind($numlinesstmt, "@var9", $var9, SQLVARCHAR, true);
mssql_bind($numlinesstmt, "@var10", $var10, SQLFLT8, true);
mssql_bind($numlinesstmt, "@var11", $var11, SQLFLT8, true);
mssql_bind($numlinesstmt, "@var12", $var12, SQLFLT8, true);
mssql_bind($numlinesstmt, "@var13", $var13, SQLFLT8, true);
// now execute the procedure
$numlinesresult = mssql_execute($numlinesstmt);
$numlines = mssql_num_rows($numlinesresult);
在第一盤mssql_bind聲明的變量都正確填充,而你所期望的第二個呼叫覆蓋他們,他們不!當我第一次應用這個「修復」到現場$ numlines可變正被正確填充這讓我再通過所有的行工作帶回SELECT語句中的存儲過程創建。然而,24小時後的第二組停止工作,我剛剛得到來自mssql_num_rows($ numlinesresult)調用一個0。
任何人都可以請告知我在這裏做了錯事,因爲我真的不應該調用存儲過程兩次,每次以不同的方式,以獲得所有的信息了。
在此先感謝!
謝謝,我會與數據庫供應商(不與自己的數據庫或數據庫工作的危險,你有充分的機會到了!) –
經過與數據庫開發檢查,他說NOCOUNT沒有設置... –