我正在试图弄清楚如何在while语句中执行foreach语句。正如您可以通过此代码告诉的那样,即使它选择了所有行,它也只会从表中提交1行。我如何选择每一行?
代码:
$q2 = mysql_fetch_array(mysql_query("SELECT * FROM `ticketreply` WHERE `ticketid`='$id'"));
$num_rows = mysql_num_rows($q2);
while(count($num_rows) > $i){
echo "<div style='float:left;width:940px;margin-bottom:2%;margin-left:".($i + 1)."0px;margin-right:25%;'><div style='margin-left:".($i + 1)."0px;border:1px solid #cecece;padding:10px;'>Posted By: <a href='#'>".user2($q2[1])."</a><h2>".$q2[2]."</h2></div></div></div>";
$i++;
}
新尝试:
$q2 = mysql_query("SELECT * FROM `ticketreply` WHERE `ticketid`='$id'");
$i = 0;
foreach($q2 as $s){
echo "<div style='float:left;width:100%;margin-bottom:2%;margin-left:".($i + 1)."0px;margin-right:25%;'><div style='margin-left:".($i + 1)."0px;border:1px solid #cecece;padding:10px;'>Posted By: <a href='#'>".user2($s[1])."</a><h2>".$s[2]."</h2></div></div></div>";
$i++;
}
虽然现在这不会显示任何行。
答案 0 :(得分:1)
$q2 = mysql_query("SELECT * FROM `ticketreply` WHERE `ticketid`='$id'");
$i = 0;
while ($s = mysql_fetch_array($q2, MYSQL_NUM)) {
echo "<div style='float:left;width:100%;margin-bottom:2%;margin-left:".($i + 1)."0px;margin-right:25%;'><div style='margin-left:".($i + 1)."0px;border:1px solid #cecece;padding:10px;'>Posted By: <a href='#'>".user2($s[1])."</a><h2>".$s[2]."</h2></div> </div></div>";
$i++
}
答案 1 :(得分:1)
为了清楚起见,您的查询SELECT * FROM
ticketreply WHERE
ticketid ='$id'
很可能只从表格中选择一行。我假设ticketid
表中的ticketreply
是唯一的。所以只选择了一行。
如果我遵循这个假设,那么......
mysql_fetch_array
从查询返回的单行中提取所有列。 mysql_fetch_array
上的文档可以是found here。
我建议,在您深入研究输出HTML和样式之前,先从$q2
的一些打印语句开始,看它确实包含您希望它包含的内容,并具有您的结构期待它有。
尝试:
$q2 = mysql_fetch_array(mysql_query("SELECT * FROM `ticketreply` WHERE `ticketid`='$id'"));
print_r($q2);
你应该看到$ q2是一个整数索引和字符串索引的数组(也就是说,它也是一个散列,表中的每个列名都是一个键)。让我们限制mysql_fetch_array
,以便它只给我们相关的数组(字符串索引部分),而不是整数。
$q2 = mysql_fetch_array(mysql_query("SELECT * FROM `ticketreply` WHERE `ticketid`='$id'"), MYSQL_ASSOC);
现在,您可以通过以下方式访问$q2
的每个元素作为键值对:
foreach ($q2 as $column => $value) {
print "column name: $column\n";
print " value: $value\n";
print "\n";
}
相反,如果您不关心列名,并且只想要一个整数索引的值数组,那么您可以执行以下操作:
$q2 = mysql_fetch_array(mysql_query("SELECT * FROM `ticketreply` WHERE `ticketid`='$id'"), MYSQL_NUM);
然后,您可以使用常规for
循环来迭代结果......
for ($i = 0; $i < sizeof($q2); $i++) {
print "Value $i: " . $q2[$i] . "\n";
}
一旦您对$q2
的结构有了良好的感觉,那么您可能会感觉非常舒适并且自信地输出您的HTML,其中$q2
的值嵌入在正确的位置。