1

我有一个函数,它接受一个表数组作为参数,并在内部加入它们后返回结果行。

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

如何构建查询?例如 if$tables = array('table1', 'table2')$join_on = 'field_x'then 它应该创建以下查询:

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

当然,您需要添加一些错误检查以确保您至少有一个表,$tables并且总是有 N-1 个元素,$join_on其中 N 是表的数量$tables

于 2012-12-10T18:35:23.747 回答
0

由于上述功能适用于 2 个表,而我正在研究大约 3 个表来工作。任何人都可以向我提供它的流程。

我正在使用上述代码加入 3 个或更多表,但似乎无法正常工作。需要了解流程。

于 2021-03-30T07:06:05.343 回答