-3

这是我的代码,它正在检查我的结果。问题是它列出了我的数据库表中的一行五次。有 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>
        ";
    }
}
4

2 回答 2

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循环“向下”迭代该表,其中每个表$row都是数据库中的一行。foreach对执行 a$row将分别遍历每一列。

于 2012-11-09T16:30:38.413 回答
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>';
}
于 2012-11-09T16:33:37.903 回答