Foreach循环循环过多

时间:2012-11-09 16:29:24

标签: php mysql

这是我的代码,它正在通过我的结果。问题是它列出了我的数据库表中的一行五次。有id,名称,电子邮件,公司和标题。我如何只显示一次结果?

$sql = "SELECT * FROM `newsletter`";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
    foreach ($row as $key => $value) {
        $DATA .= "
            <div id='contentBox'>
            Name: $row[Name]<br />
            Email: $row[Email]<br />
            Company: $row[Company]<br />
            Title: $row[Title]<br />
            <br />
            </div>
        ";
    }
}

2 个答案:

答案 0 :(得分:6)

摆脱foreach循环,你不需要它。

while ($row = mysql_fetch_assoc($result)) {
        $DATA .= "
            <div id='contentBox'>
            Name: $row[Name]<br />
            Email: $row[Email]<br />
            Company: $row[Company]<br />
            Title: $row[Title]<br />
            <br />
            </div>
        ";
}

请记住,您正从数据库中获取行(包含多列)。

----------------------
| col1 | col2 | col3 |
----------------------
| val1 | val2 | val3 |
----------------------

你的while循环迭代&#34; down&#34;该表,其中每个$row是数据库中的一行。在foreach上执行$row将分别遍历每列。

答案 1 :(得分:0)

这是一个仍然使用foreach循环的替代方案。这种方法的好处是,如果您添加或删除列,则无需修改循环。

$sql = "SELECT * FROM `newsletter`";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
    $DATA .= '<div id="contentBox">';
    foreach ($row as $key => $value) {
        $DATA .= $key . ': ' . $value . '<br />';
    }
    $DATA .= '</div>';
}