【问题标题】:Multiple Data Tables in PHP/MySQL?PHP / MySQL中的多个数据表?
【发布时间】:2010-09-16 22:52:03
【问题描述】:

在 asp.net 中,您可以通过对数据库的一次调用来检索 MULTIPLE 数据表。你能在php中做同样的事情吗?

例子:

$sql ="select * from t1; select * from t2;";
$result = SomeQueryFunc($sql);
print_r($result[0]); // dump results for t1
print_r($result[1]); // dump results for t2

你可以这样做吗?

【问题讨论】:

    标签: php mysql dataset


    【解决方案1】:

    这应该可以使用较新的MySQL和MySQLI(改进)PHP扩展。 我不确定是否有任何DB抽象层支持这一点。

    请参阅相关的MySQL docsPHP docs.

    【讨论】:

      【解决方案2】:

      PDOStatement::nextRowset() 似乎是你所追求的。

      【讨论】:

        【解决方案3】:

        这称为“多查询”。 PHP 中的 mysql 扩展没有任何方法来启用多查询。 mysqli 扩展确实允许您使用多查询,但只能通过 multi_query() 方法。见http://php.net/manual/en/mysqli.multi-query.php

        不建议使用多查询,因为它会增加 SQL 注入攻击造成的潜在破坏。如果你使用多查询,你应该使用严格的代码检查习惯来避免SQL注入漏洞。

        【讨论】:

          【解决方案4】:

          如果您使用的是Classic MySQL,则不能。您可以创建一个看起来像

          的函数
          function SomeQueryFunc($queries) {
              $queries = explode(';', $queries);
              $return = array();
              foreach($queries as $index => $query) {
                  $result = mysql_query($query);
                  $return[$index] = array();
                  while($row = mysql_fetch_assoc($result)) {
                     foreach($row as $column => $value) {
                        $return[$index][$column] = $value;
                     }
                  }
              }
              return $return;
          }
          

          将按预期工作

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-06-13
            • 2010-12-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多