【问题标题】:Moving from one resultset to another php从一个结果集移动到另一个 php
【发布时间】:2012-08-23 23:10:00
【问题描述】:

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

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

我有一张像下面这样的桌子

创建表区域(区域名称 VARCHAR(255), 密码 VARCHAR(255)) 插入区域(区域名称、密码) 值('Teynampet','6000018'), ('拉马普拉姆','6000089'), ('TNagar', '6000017'), ('Mylapore', '6000014'), ('戈帕拉普拉姆','6000087')

我有一个类似下面的程序

如果存在 mp_test1,则删除程序; 创建过程 mp_test1() 开始 从区域中选择区域名称; 从区域中选择密码; 结尾

现在,如果您看到程序返回两个结果集。请注意结果集不是记录集。我如何在 PHP 中从一个结果集移动到另一个结果集。

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

【问题讨论】:

  • 我不知道这是否只是一个测试,但我看不出这个过程的原因,你为什么不做两个分开的查询?
  • 这不是我的实际要求,我编写了通过将 10 个表连接在一起的查询来获得结果的过程。如果我把同样的东西放在这里,我将无法解释其中的逻辑,任何人都不会处于阅读和理解的状态
  • 调用这个过程会返回什么?
  • 不同结果集中大约 100 到 150 条记录
  • 查询的目的是什么,您想要获得的预期输出是什么?

标签: php mysql


【解决方案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 ---

【讨论】:

  • 那么你可能想在你的问题文本中添加你用来连接mysql服务器的api。
  • 对不起,我不使用任何 API 我只使用 mysqli 方法来创建连接
  • mysqli::next_result 不适用于过程 它仅适用于多查询
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 2015-01-18
  • 1970-01-01
相关资源
最近更新 更多