gpt4 book ai didi

zend-framework - 如何使用Zend Framework在MySql数据库中使用存储过程?

转载 作者:行者123 更新时间:2023-12-03 13:29:13 25 4
gpt4 key购买 nike

我最近学会了使用Zend Framework。我做了一个简单的CRUD应用程序。但是现在我想将现有的数据库用于更复杂的应用程序,并且想知道如何在Model中调用存储过程,如何发送参数,如何读取结果并将其存储在PHP数组中。请。我感谢任何帮助:)

最佳答案

不太难。这是带有IN参数,OUT参数和结果集的MySQL存储过程的示例:

CREATE PROCEDURE MyProc(IN i INTEGER, OUT o INTEGER)
BEGIN
SELECT i+10 INTO o;
SELECT i, o;
END


您可以使用 query()方法调用此方法,并传递一个参数:

$stmt = $db->query("CALL MyProc(?, @output)", array(25));
print_r( $stmt->fetchAll() );


诀窍在于,MySQL存储的proc可能返回多个结果集(例如,如果proc有多个 SELECT查询)。因此,API必须先遍历所有结果集,然后才能执行另一个SQL查询。否则,您将收到“命令不同步”错误。

如果使用PDO_MySQL适配器:

while ($stmt->nextRowset()) { }


如果使用MySQLi适配器,则会发现 Zend_Db_Statement_Mysqli没有实现 nextRowset(),因此必须调用内部mysqli连接对象:

while ($db->getConnection()->next_result()) { }


清除结果集后,可以运行后续的SQL查询,例如以获取过程的 OUT参数的值:

$stmt = $db->query("SELECT @output");
print_r( $stmt->fetchAll() );

关于zend-framework - 如何使用Zend Framework在MySql数据库中使用存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1303912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com