【问题标题】:MySQL Stored Procedures and PHPMyAdminMySQL 存储过程和 PHPMyAdmin
【发布时间】:2016-05-11 11:33:02
【问题描述】:

我创建了一个过程(使用 PHPMyAdmin 工具),它返回一个表和两个输出。如果我使用 PHPMyAdmin 的“执行”按钮执行该过程,它会发送此查询:

SET @p0 =  '12';
SET @p1 =  '1';
CALL `getPhoneReview` (@p0 , @p1 , @p2 , @p3);
SELECT @p2 AS  `PhoneCount` , @p3 AS  `ReviewCount`;

返回预期的内容(表格和两个输出)。但是,如果我复制该确切代码并从 SQL 部分执行,它只会执行最后一句:

CALL `getPhoneReview` (@p0 , @p1 , @p2 , @p3)

什么都不返回。

尝试使用 PHP 检索输出值时也会发生这种情况。我有这个代码:

$C = new MySQLi(...);
$Q = $C->query("CALL getPhoneReview(12, 1, @PhoneCount, @ReviewCount)");
/* Looping over $Q works fine */
$PhoneCount = $C->query("SELECT @PhoneCount AS PhC");
$PCO = $PhoneCount->fetch_object();
var_dump($PCO->PhC); /*  Call to a member function fetch_object() on boolean */

有人可以帮我吗?

【问题讨论】:

    标签: php stored-procedures mysqli


    【解决方案1】:

    您的代码有两个问题。

    • 首先,您的代码中没有正确报告 mysqli 的错误,并且您只有 PHP 的通知,但没有真正的 mysql 错误。您可以阅读如何正确制作它here
    • 其次,调用存储过程后,应始终调用$C->next_result();为了让其他查询被执行。

    【讨论】:

    • 在循环后添加 $C->next_result() 解决了问题。谢谢!
    猜你喜欢
    • 2020-02-26
    • 2014-09-29
    • 2015-03-16
    • 2016-12-02
    • 2011-12-26
    • 2013-12-15
    • 1970-01-01
    • 2012-05-22
    • 2014-06-14
    相关资源
    最近更新 更多