0

拥有一个带有子类的 PHP 工厂,可以查询数据库中的一个或多个不相关的表。该类将表名作为参数并返回一个数组对象。

当需要多个表时,我想要一种将每个表结果集分隔到自己的数组中的方法。然后该类将返回一个多维数组。

我宁愿不实例化工厂的另一个实例。这是当前查询/结果代码块。为简洁起见,我省略了所有其他非必要的代码

// if array has more than one table to query, 
// run queries on each table
$count = count($tname);
if ($count>1) {
  foreach ($tname as $value) {          //each table name in array
    /* $query = "SELECT s.* FROM $value s"; tried with table alias */
    $query = "SELECT * FROM $value";
    if ($stmt = self::$_conn->prepare($query)) {
      $stmt->execute();
      while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
      $result[] = $row;
      }
    } else {
      return false;
    }                           
  }
  return $result;

// else if only one table to query  
} else {
  $string = $tname;                 //table name
  $query = "SELECT * FROM $string";
  if ($stmt = self::$_conn->prepare($query)) {
    $stmt->execute();
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $result[] = $row;
    }
    return $result;
  } else {
    return false;
  }
} 

使用多个表,将返回如下内容:

 Array
 ( 
   [0] => Array
    (
        [team_id] => 3
        [team_name] => Maverics
    )
[1] => Array
    (
        [team_id] => 4
        [team_name] => Stallions
    )
[3] => Array
    (
        [fld_id] => 1
        [fld_name] => 6v6-1
    )
[4] => Array
    (
        [fld_id] => 2
        [fld_name] => 8v8-2
    )
)

其中 0,1 来自一个表,3,4 来自另一个表。

先感谢您

4

1 回答 1

0

想通了...实际上很简单,只是在我问问题之前没有看到。我变了:

 $result[] = $row;

 $result[$value][] = $row;   //line 11 in code block example

现在,这将返回包含每个表名的数组作为结果集的数组名。不管怎么说,还是要谢谢你,

于 2013-05-25T20:30:49.650 回答