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 に答える