2013-05-25 50 views
0

有一個PHP工廠,它有一個子類,用於查詢數據庫中的一個或多個無關表。該類將一個表名稱作爲參數並返回一個數組對象。爲多個不相關的表分隔PHP/PDO執行結果

當需要多個表時,我想要一種方法將每個表結果集分隔到它自己的數組中。該類將返回一個多暗數組。

我寧願不實例化另一個工廠實例。這是當前的查詢/結果代碼塊。我已經離開了所有其他非必要的代碼爲簡潔

// 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是來自另一個。

預先感謝您

回答

0

想通了......其實很簡單,只是沒有看到它之前,我問的問題。我改變:

$result[] = $row; 

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

這現在返回每個表名作爲結果集數組名數組。 無論如何感謝,