无法使用PHP从SQL Server存储过程检索输出参数

时间:2009-04-15 17:55:22

标签: php sql-server linux parameters

我正在执行一个SQL Server存储过程,它应该返回一个输出参数(ErrCode)以及一个结果集。

我使用以下代码从PHP调用该过程,但到目前为止无法检索输出参数:

$stmt = mssql_init("addFaculty", $this->db);

mssql_bind($stmt, "@FacultyID", $FacultyID, SQLCHAR);
...imagine other parameters here...
mssql_bind($stmt, "@ErrCode", &$ErrCode, SQLINT1, TRUE, FALSE, 1);

$result = mssql_execute($stmt);

echo $ErrCode

$ ErrCode总是回显为0,即使它应该返回'1'或'2'。但是,当我在SQL Server Studio中执行该过程时,“消息”选项卡将正确显示“1”或“2”。

在进行研究时,我发现一条建议说您必须先使用mssql_next_result()才能访问输出参数。我试过这个,但它只是返回了一个PHP

  

“警告:mssql_next_result():提供的参数不是有效的MS SQL_result资源”

我还在this thread中找到了对类似问题的引用,但没有看到真正的解决方案。

与该主题中的人一样,我正在使用Linux(CentOS)和PHP5以及MS SQL Server 2005.

有人对此有任何建议吗?我在之前的项目中也遇到过这样的问题,最后,只是放弃了使用输出参数(并在PHP中完成了我的所有error_checking),因为我无法弄明白。找到答案会很高兴:(

3 个答案:

答案 0 :(得分:0)

我不是PHP人,但我认为this会有所帮助。

它说:

  

请注意,检索输出或时   输入/输出参数,所有结果   必须由存储过程返回   在退回之前消费   参数值可以访问。

答案 1 :(得分:0)

编辑:

您是否尝试过ADODB

答案 2 :(得分:0)

检查我关于这个问题的帖子,我使用了从Zend_Db_Table_Abstract扩展的类。我不使用纯PHP,仍然使用相应的框架。 Seens很好并且运行正常,我甚至还得到了结果集!希望它有所帮助:

Execute MSSQL stored procedure via Zend Framework