2012-12-10 16 views
1

我有一個函數接受一個表數組作爲參數,內部連接後他們返回結果行。內部連接動態表數

function myfunc($tables, $join_on) { 
foreach($tables as $table) { 
    // build query 
} 
} 

如何構建查詢?例如,如果$tables = array('table1', 'table2')$join_on = 'field_x'那麼它應該創建以下查詢:你需要添加一些錯誤檢查,以確保您

function myfunc($tables, $join_on) { 
    $mainTable = $tables[0]; 
    $sql = "SELECT * FROM $mainTable"; 
    for($i = 1; i<count($tables);$i++) { 
     $curTable = $tables[$i]; 
     $joinField = $join_on[$i-1]; 
     $sql.= " INNER JOIN $curTable ON $curTable.$joinField = $mainTable.$joinField"; 
    } 

    return sql; 
} 

當然:

SELECT * FROM table1 INNER JOIN table2 ON table1.field_x = table2.field_x

+0

我試圖建立一個數組在循環中加入,然後使它們崩潰,但似乎'implode'不適合這個問題 – user16948

+0

也許顯示你的代碼。 –

+0

這是一個多麼糟糕的問題。我希望這是值得的。 – NappingRabbit

回答

2

你可以做這樣的事情至少有一個表在$tables和總是N-1元素在$join_on其中N是表中的數量$tables

+0

謝謝,一些修改的作品。 – user16948