【问题标题】:Patch PHP 5.3.10 to support sybase_next_result()修补 PHP 5.3.10 以支持 sybase_next_result()
【发布时间】:2012-04-18 07:32:12
【问题描述】:

数据库管理系统 Sybase ASE 支持多个结果集,但 PHP 中的 Sybase 实现不支持。有一个关于此问题的错误报告,并且该报告中还提供了一个补丁 (https://bugs.php.net/bug.php?id=48675)。该补丁适用于 5.2.9 版,我已尝试将其添加到 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: Unexpected results, canceling current in...”时,'sybase_query()' 上有一个通知。检索第一个结果集。即使没有补丁也会返回此通知。

数据库中返回多个结果集的存储过程数量巨大,“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 版。

有没有人“解决”了这个问题?

关于 //乔纳斯

【问题讨论】:

    标签: php patch sap-ase


    【解决方案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”。这可能是因为之前的

    ZEND_FETCH_RESOURCE2(sybase_ptr, sybase_link *, sybase_link_index, id, "Sybase-Link", le_link, le_plink);
    

    以 'retcode' 变为 'CS_FAIL' 的 sutch 方式设置 'sybase_ptr'。

    【讨论】:

    • 我无法解决这个问题。有谁成功地修补了 PHP 以保持 'sybase_next_result() 的工作函数?我希望这个功能将被纳入未来的 PHP 版本中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多