2012-04-18 52 views
3

數據庫管理系統Sybase ASE支持多個結果集,但是PHP中Sybase的實現不支持。在這個問題上報告了一個錯誤,並在該報告中提供了一個補丁(https://bugs.php.net/bug.php?id=48675)。該補丁適用於5.2.9版,我試圖將其添加到版本5.3.10。源代碼沒有警告或錯誤,並且測試新函數'sybase_next_result()'不會產生致命錯誤「調用未定義的函數」。這表明該功能已經實現,但不能按預期工作。修補PHP 5.3.10以支持sybase_next_result()

配置爲:

configure --disable-isapi --enable-debug-pack --without-mssql --without-pdo-mssql --without-pi3web --with-mcrypt=static --disable-static-analyze --enable-cli --with-sybase-ct=%SYBASE%\%SYBASE_OCS% 

有一個通知書 'sybase_query()' 當有多個結果集說的 「Sybase:意外的結果,在...取消當前」。第一個結果集被檢索。即使沒有補丁,此通知也會返回。

返回多個結果集的數據庫中的存儲過程的數量很大,'sybase_next_result()'將是最佳解決方案。簡而言之,我在PHP 5.3.10中尋找與Sybase的'mssql_next_result()'(http://se2.php.net/manual/en/function.mssql-execute.php)相當的東西。

值得注意的是,Sybase實施的其他部分已就位並且看起來像預期的那樣工作。

我的測試環境是WAMP服務器(Windows 7,Apache 2.21,MySQL 5.5.20,PHP 5.3.10),Sybase ASE是15.7.0版本。

有沒有人有解決這個問題?

至於 //喬納斯

回答

1

更新:

一位同事給我的指示來使用 '的OutputDebugString()'(http://msdn.microsoft.com/en-us/ library/windows/desktop/aa363362(v = vs.85).aspx),並用DebugView(http://technet.microsoft.com/en-us/sysinternals/bb896647)捕獲。

從這個我可以說,'sybase_next_result()的調用,但該塊

if (sybase_ptr->active_result_index) { 
    ... 
} 

不運行。這可能是正確的(正如我所見)。

retcode = ct_results(sybase_ptr->cmd, &restype); 

總是設置 'RETCODE' 到 'CS_FAIL'。這可能是因爲之前的版本以sutch方式將'sybase_ptr'設置爲'retcode'變爲'CS_FAIL'。

+0

我無法解決這個問題。那些已經成功修補PHP以保存'sybase_next_result()的工作函數的人?我希望這個功能將被納入即將發佈的PHP版本。 – jbollden 2012-04-25 09:17:50