存储过程zend framework 2.2 tablegateway中的多选问题
Posted
技术标签:
【中文标题】存储过程zend framework 2.2 tablegateway中的多选问题【英文标题】:Trouble with multiple select in stored procedure zend framework 2.2 tablegateway 【发布时间】:2013-08-20 04:00:59 【问题描述】:我正在使用 Zend 框架 2.2 和 tablegateway 库在 PDO-mysql 中处理存储过程。
存储过程的一般示例
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_proc`(IN id SMALLINT)
BEGIN
SELECT * FROM TABLE_A WHERE ID_TABLE=ID;
SELECT * FROM TABLE_B WHERE ID_FK=ID;
END
这是来自模型的函数
public function __construct(Adapter $adapter = null, $databaseSchema = null, ResultSet $selectResultPrototype = null)
return parent::__construct('', $adapter, $databaseSchema,
$selectResultPrototype);
public function listaServicio()
$dbAdapter=$this->getAdapter();
$stmt = $dbAdapter->createStatement();
$stmt->prepare('CALL sp_proc(:id)');
$id=15;
$stmt->getResource()->bindParam(':id', $id, \PDO::PARAM_INT);
$resultado=$stmt->execute();
while ($resultado->next())
var_dump($resultado->current());
我只有“第一个”选择(table_a)的结果,但无法从“第二个”(table_b)获得结果。我错过了什么?
【问题讨论】:
您是否尝试过任何教程或 google pdo 存储过程,或者至少在您编写此问题时提供给您的相关问题? 是的,我试过了。我找到了一个解决方案,在库中找到了一些方法来调用方法......比如 nextRowset。 【参考方案1】:我自己回答,也许对某人有用。
public function listaServicio()
$stmt = $dbAdapter->createStatement();
$stmt->prepare('CALL sp_proc(:id)');
$id=15;
$stmt->getResource()->bindParam(':id', $id, \PDO::PARAM_INT);
$resultado=$stmt->execute();
$result1=$stmt->getResource()->fetchAll(\PDO::FETCH_OBJ);
var_dump($result1);
$stmt->getResource()->nextRowset();
$result2=$stmt->getResource()->fetchAll(\PDO::FETCH_OBJ);
var_dump($result2);
$stmt->getResource()->closeCursor();
【讨论】:
以上是关于存储过程zend framework 2.2 tablegateway中的多选问题的主要内容,如果未能解决你的问题,请参考以下文章