从一个结果集移动到另一个PHP

时间:2012-08-29 10:51:30

标签: php mysql

如何在PHP中从一个结果集移动到另一个结果集。

我通过mysqli方法创建了一个数据库连接,即mysqli('root','localhost','root','','test',3306)

我有一张像下面的表

    CREATE TABLE Areas(AreaName VARCHAR(255),
                        PinCode VARCHAR(255))

    INSERT INTO Areas(AreaName, PinCode)
          VALUES('Teynampet', '6000018'), 
                ('Ramapuram', '6000089'),
                ('TNagar', '6000017'), 
                ('Mylapore', '6000014'), 
                ('Gopalapuram', '6000087')

我有一个像下面的程序


    DROP PROCEDURE IF EXISTS mp_test1;
    CREATE PROCEDURE mp_test1()
    BEGIN
      SELECT AreaName FROM Areas;
      SELECT PinCode FROM Areas; 
    END 

现在如果你看到过程它会返回两个结果集。请注意结果集不是记录集。如何在PHP中从一个结果集移动到另一个结果集。

不建议我内部联接查询,因为我的要求与我在上面发布的完全相同。我的问题是从PHP中的一个结果集转移到另一个结果集

1 个答案:

答案 0 :(得分:1)

使用PDO方法的PDOStatement::nextRowset


使用mysqli时,要使用的函数/方法是mysqli::next_result


mysqli示例:

<?php
$mysqli = new mysqli('localhost', 'localonly', 'localonly', 'test');
if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}


if (!$mysqli->multi_query('CALL mp_test1')) {
    echo 'error';
}
else {
    do {
        echo "--- result set ---\r\n";
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_row()) {
                echo join(', ', $row), "\n";
            }
            $result->free();
        }
    } while ($mysqli->more_results() && $mysqli->next_result());
}

打印(带有问题的示例数据)

--- result set ---
Teynampet
Ramapuram
TNagar
Mylapore
Gopalapuram
--- result set ---
6000018
6000089
6000017
6000014
6000087
--- result set ---