很抱歉这个令人困惑的标题,让我试着解释一下。问题涉及自定义日志记录软件,公司可以在其中设计自己的“日志”。每个日志都有一个相应的元数据表,其中包含日志中的列。
我使用php来渲染日志中的数据显示。我首先访问元表中的列名,并使用它来构建带有foreach的表头,如图所示
foreach ($logStructure as $header)
{
echo '<th>' . $header['label'] . '</th>';
}
endforeach;
现在我已经从实际日志中选择了另一个要显示的行,并在数组中调用$ logrow。 如何迭代这些行并将正确的数据放在右列? 在SQl中,我会使用WHERE子句来说明以下内容:
'WHERE $logrow['fieldname'] = $header['label']'
作为一个例子,metatable字段看起来像这样
[metaid] [columnLabel] [columnNameInData]
001 Log Number logNum
002 Author CreateUser
003 Subject Entry
数据通过类似
的语句放入$ header []SELECT columnLabel AS label FROM metatable;
日志结构看起来像这样
[logNum] [CreateUser] [Entry]
001 Admin Some Text about Stuff
002 Editor 1 Another Amazing Entry
003 Editor 2 It gets old by now
所以选择看起来像这样
SELECT logNum, CreateUser, Entry FROM log
数据放入$logrow['lognum'], $logrow['CreateUser'], $logrow['Entry']
希望这会更好地解决问题,我希望将元数据中的列名与实际数据中这些字段的值相匹配。
答案 0 :(得分:0)
如果序列总是一样的,并且你只是想在同一个表中渲染它,我看不出是什么阻止你将它们读入2个独立的数组,然后将它绘制到表格上。
首先:
SELECT columnNameInData FROM metatable ORDER BY metaid;
将结果放入数组$sort
然后将其内爆并构建您的第二个选择子句:
$columns=implode(', ', $sort);
$SQL="SELECT $columns FROM log";
将结果读入数组$result2
最后,将您拥有的标头和$ result2的输出组合为日志的行和标记,此表应该使标记与标题对齐。