我正在尝试在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
。如何改进此查询?
答案 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”