PHP脚本显示查询中的列两次


PHP script showing columns from Query twice

嘿,我有一个类似ID | FIRSTNAME | NAME的表(名称),但是当我查询所有列和行,然后将它们打包到一个HTML表中并将它们写入一个文件时,所有列都会显示两次。

$name_query = mssql_query('SELECT
*
FROM names
;');
fopen($my_file, "w");
//table tag
fwrite($my_file, '<table border="1">');
//iterate over all rows
while($row = mssql_fetch_array($name_query)) {
    //start table-row for each row
    fwrite($my_file, '<tr>');
    //iterate over all columns
    foreach($row as $entry) {
        fwrite($my_file, '<td>'.$entry.'</td>');
    }
    //end table-row
    fwrite($my_file, '</tr>');
}
//end table
fwrite($my_file, '</table>');
fclose($my_file);

(1,"Karl","Übertyp")作为HTML表的预期结果:

1 | Karl | Übertyp

但我不知怎么得了

1 | 1 | Karl | Karl | Übertyp | Übertyp

为什么会发生这种情况?我的代码中有错误吗?还是其他地方搞砸了?

我想你的html文件已经损坏:

fwrite($my_file, '<table border="1"');

应该是

fwrite($my_file, '<table border="1">');

好的,很长一段时间没有使用mssql。问题是缺少一个参数:

mssql_fetch_array($name_query,MSSQL_ASSOC)

如果您不提供MSSQL_ASSOC,那么函数将以数字AND关联数组的形式返回所有值,有效地使resut加倍;-)

另请参阅https://secure.php.net/manual/en/function.mssql-fetch-array.php

Issue是针对while循环中的每个值运行foreach循环。第一次While Loop跑步,在While foreach结束前再次跑步。

<?
$name_query = mssql_query('SELECT * FROM names;');
fopen($my_file, "w");
fwrite($my_file, '<table border="1"');
while($row = mssql_fetch_array($name_query)) 
{
  fwrite($my_file, '<tr>');
        fwrite($my_file, '<td>'.$row[0].'</td>');
        fwrite($my_file, '<td>'.$row[1].'</td>');
        fwrite($my_file, '<td>'.$row[2].'</td>');
  fwrite($my_file, '</tr>');
}
fwrite($my_file, '</table>');
fclose($my_file);
?>