2008-10-13 34 views
3

在asp.net中,您可以从一次调用数据库中检索MULTIPLE数据表。你可以在PHP中做同样的事情吗?PHP/MySQL中的多个数据表?

例子:

$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 

你能不能做这样的事?

回答

3

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

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

0

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

参见相关MySQL docsPHP docs

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; 
} 

预期

将工作