我有一个函数接受一个表数组作为参数,并在内部连接后返回结果行。
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
答案 0 :(得分:2)
您可以这样做:
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
中至少有一个表,$join_on
中始终有N-1个元素,其中N是{{1}中的表数}}
答案 1 :(得分:1)
As above 函数适用于 2 个表,而我正在研究大约 3 个表的工作。 任何人都可以向我提供它的流程。
我正在使用上述代码加入 3 个或更多表,但似乎不起作用。需要了解流程。