1

パラメータとしてテーブルの配列を受け入れる関数があり、それらを内部結合した後、結果の行を返します。

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

クエリを作成するにはどうすればよいですか? たとえば$tables = array('table1', 'table2')$join_on = 'field_x'次のクエリを作成する必要がある場合:

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

4

2 に答える 2

3

あなたはこのようなことをすることができます:

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

もちろん、エラーチェックを追加して、少なくとも1つのテーブルが$tablesあり、常にN-1個の要素があることを確認する必要があります$join_on。ここでNはテーブルの数です。$tables

于 2012-12-10T18:35:23.747 に答える
0

上記の機能は2つのテーブルで機能しますが、3つのテーブルについて調査しています。誰かが私にそれの流れを提供してくれませんか。

上記のコードを使用して 3 つ以上のテーブルを結合していますが、機能していないようです。フローを理解する必要があります。

于 2021-03-30T07:06:05.343 に答える