0

如何在 zend 框架 2 中执行具有多个结果集的 MYSQL 存储过程意味着如果 sp 有多个选择查询,那么我如何在数组中获取所有结果以及如何在 sp 中传递动态值以在表中插入和更新数据。

谢谢..

4

1 回答 1

1

我最近写了一篇关于这个的小文章。我找到的解决方案不是通用解决方案,并假设您使用的是 PDO。我不确定它是否适用于 MySQL 以外的其他数据库。有可能有一种我不知道的更好、更通用的方法来做到这一点。

$driver = $this->dbAdapter->getDriver();
$connection = $driver->getConnection();

$result = $connection->execute('CALL sp_get_profile_for_display (123)');
$statement = $result->getResource();

// Result set 1
$resultSet1 = $statement->fetchAll(\PDO::FETCH_OBJ);

foreach ($resultSet1 as $row) {
    $something = $row->some_column;
}

// Result set 2
$statement->nextRowSet(); // Advance to the second result set
$resultSet2 = $statement->fetchAll(\PDO::FETCH_OBJ);

foreach ($resultSet2 as $row) {
    /* Do something */
}

// Result set 3
$statement->nextRowSet(); // Advance to the third result set
$resultSet3 = $statement->fetchAll(\PDO::FETCH_OBJ);

foreach ($resultSet3 as $row) {
    /* Do something */
}

将 替换为123您希望作为参数传递给存储过程的数据。如果使用用户提供的数据,请记住将其转义以防止 SQL 注入!

于 2013-03-02T19:09:52.453 回答