未知列,列名和HTML表格中的行

时间:2013-02-01 17:44:33

标签: php

我正在尝试在HTML表格中的msSQL表格中显示所有信息,并且还有一些不太好的东西。

<table border="1">
<?
echo "<tr>";
for ($i = 0; $i < mssql_num_fields($result); ++$i){
    echo "<th>" .$column_names[$i] . "</th>";
}
echo "</tr>";

$num_rows =  mssql_num_rows($result);

for ($i = 0; $i < $num_rows; ++$i){
    echo "<tr>";
    foreach ($column_names as $key => $val){    
        $result_row = mssql_query("SELECT * FROM username WHERE id = '$i'");
        $row = mssql_fetch_assoc($result_row);
        echo "<td>";
        echo $row[$val];
        echo "</td>";
    }
    echo "</td>";
}
?>
</table>

这很有效。第一部分成功打印出列名,但其余部分: 1)我认为通过循环每次进行查询都很麻烦 2)它没有真正起作用,因为行的id远远高于表中的行数,因为没有使用某些id。

好像我应该只能进行一次查询并一次从数据库中提取所有内容,然后从中构建我的HTML表格,但我无法弄清楚如何逐行访问它我可以去哪里$row[next row][shifted value from $column_names。如何改进此查询?

2 个答案:

答案 0 :(得分:0)

function table_cell($item, $header=false) {
    if (!$item) return '';
    $elemname = ($header) ? 'th' : 'td';
    $escitem = htmlspecialchars($item, ENT_NOQUOTES, 'UTF-8');
    return "<{$elemname}>{$escitem}</{$elemname}>";
}
function table_header_cell($item) {
    return table_cell($item, true);
}
function table_row($items, $header=false) {
    $func = ($header) ? 'table_header_cell' : 'table_cell';
    return "<tr>\n\t".implode("\n\t", array_map($func, $items))."\n</tr>\n";
}

function echo_result_as_table($result) {
    if ($result && $row = mssql_fetch_assoc($result)) {
        $columnnames = array_keys($row);
        echo "<table>\n", table_row($columnnames, true), "\n";
        do {
            echo table_row($row), "\n";
        } while ($row = mssql_fetch_assoc($result));
        echo "</table>\n";
    }
}


$result = mssql_query("SELECT * FROM username");
echo_result_as_table($result);
if ($result) mssql_free_result($result);

如果你有一个关联数组的数组而不是原始的sql结果句柄,你可以使用这样的函数来生成一个表字符串:

function array_to_table($arrayofassoc) {
    if (!$arrayofassoc) return '';
    $tablestr = '<table>';
    $tablestr .= table_row(array_keys($arrayofassoc[0]), true);
    $tablestr .= implode('', array_map('table_row', $arrayofassoc));
    $tablestr .= '</table>';
    return $tablestr;
}

答案 1 :(得分:-2)

试试这个:

while($row = mysql_fetch_results($result)){
    echo '<td>'.$row['column_name'].'</td>';
}

'column_name'是mysql中列的名称。

但有些人会说......“等等,但PDO”

相关问题