3

在 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

你能做这样的事情吗?

4

4 回答 4

3

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

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

于 2008-10-13T21:19:34.297 回答
0

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

请参阅相关的MySQL 文档PHP 文档

于 2008-10-13T19:04:40.607 回答
0

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

于 2008-10-13T19:08:35.247 回答
0

如果您使用的是经典 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;
}

这将按预期工作

于 2011-11-13T12:11:54.143 回答