2012-11-09 37 views
-3

这是我的代码,它正在经历我的结果。问题是它在我的db表中五次列出一行。有身份证,姓名,电子邮件,公司和职位。我如何只显示一次结果?Foreach循环循环太多

$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> 
     "; 
    } 
} 
+0

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护,[弃用过程](http://j.mp/Rj2iVR)已经开始。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 –

+0

感谢您的信息。 – wowzuzz

回答

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是在数据库中的一行。在$row上执行foreach将逐个遍历每列。

+0

为什么我没有看到这个..大声笑。非常感谢你的解释。 – wowzuzz

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>'; 
}