0

データベース内の 1 つ以上の無関係なテーブルをクエリするサブクラスを持つ PHP ファクトリを用意します。このクラスは、テーブル名をパラメーターとして取り、配列オブジェクトを返します。

複数のテーブルが必要な場合、各テーブルの結果セットを独自の配列に区切る方法が必要です。その後、クラスは multi-dim 配列を返します。

ファクトリの別のインスタンスをインスタンス化しないことをお勧めします。これが現在のクエリ/結果コード ブロックです。簡潔にするために、他のすべての重要でないコードを省略しました

// 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