一个查询上的while循环和mysql_fetch_assoc?
Posted
技术标签:
【中文标题】一个查询上的while循环和mysql_fetch_assoc?【英文标题】:While loop and mysql_fetch_assoc on one query? 【发布时间】:2011-07-05 18:37:10 【问题描述】:我有一个对表执行 mysql 查询的网页。我让它在表格中呼应出来,它应该可以正常工作,例如:
$query = mysql_query("SELECT * FROM table");
while($row = mysql_fetch_array($query)
// my table and db stuff echos out here
现在使用相同的 mysql 查询 $query 我正在尝试使用下面的相同查询在同一页面上再次回显它,但我的问题是它似乎不起作用。
现在您可能认为我在做的事情很奇怪,但上面的第一个代码在表格中回显数据的原因是,而且这些内容旁边的复选框也像表格一样回显。所有这一切都很好,但似乎我不能在同一个查询上执行另一个 while 循环。第二个和上面一模一样;唯一的区别是它不是一种形式。
我可以在一个查询中只执行一次while()
和mysql_fetch_assoc
吗?
更新:
对不起,我还是没听明白。
这是我的代码;任何人都可以为我编辑它吗?
(我无法在代码中添加 php 标签以将 html 与 PHP 代码分开。不便之处敬请见谅)。
$q = mysql_query("SELECT * FROM table");
<h1> Vote for your favourite extension </h1>
<form method="post" action="<?php echo basename(__file__); ?>">
<table>
<tbody>
<tr class="odd">
<td colspan="3" class="cellfeat" style="text-align: center;">Vote for your favourite extension</td>
</tr>
<?php
if(!$q)
// query failed etc
else // query ok so display form
while($row = mysql_fetch_array($q))
echo '<tr class="odd">';
echo '<td class="cellfeat"><img src="images/statimages/extensions.gif" /></td>';
echo '<td class="cellfeat">'.$row['checkbox'].'</td>';
echo '<td class="cellfeat"><input type="checkbox" name="'.$row['id'].'" value="'.$row['id'].'" /></td>';
echo '</tr>';
?>
</tbody>
</table>
<input type="submit" class="submitcontact" value="Vote" />
</form>
<h1>Extension Statistics</h1>
<table>
<tbody>
<tr class="odd">
<td colspan="3" class="cellfeat" style="text-align: center;">Voting Statistics</td>
</tr>
while($row = mysql_fetch_array($q))
echo '<tr class="odd">';
echo '<td class="cellfeat"><img src="images/statimages/extensions.gif" /></td>';
echo '<td class="cellfeat">'.$row['checkbox'].'</td>';
echo '<td class="cellfeat">'.$row['count'].'</td>';
echo '</tr>';
?>
</tbody>
</table>
【问题讨论】:
哦。你的代码全错了。你在哪里得到它?你有工作代码了吗? 现在已经解决了,谢谢;它工作正常,只是在第二次查询中没有。但我使用了 mysql_data_seek() 并且它做了我想要的。谢谢phplover 【参考方案1】:唯一正确的方法如下: 首先,将数据收集到数组中
$data = array();
while($row = mysql_fetch_array($query)
$data[] = $row;
然后,调用模板 并根据需要多次使用您的数据:
<table>
<? foreach ($data as $row): ?>
<tr>
<td><?=$row['id']?></td>
<td><?=$row['name']?></td>
<? endforeach ?>
</table?>
【讨论】:
我更新了第一篇文章寻求帮助。谢谢你的帮助。 phplover @PHPLOVER 对不起,我不编辑代码。我相信这个网站致力于教育,而不是慈善。 它是关于教育的,但有时如果我们不理解某些东西,我认为这是一件好事,因为我们可以检查对代码的更改,以便我们从错误/误解中吸取教训。除非我首先尝试了所有可能的方法,否则我从不要求某人更改我的代码。但无论如何,谢谢,我知道我们有不同的意见。 phplover @PHPLOVER 至少您必须要求更改工作代码,而不是左右抛出解析错误。【参考方案2】:如果我了解您需要使用此功能
http://php.net/manual/en/function.mysql-data-seek.php
移动你的指针
【讨论】:
规则;我更新了第一篇文章寻求帮助。谢谢你的帮助。 phplover rulex 谢谢,后来我设法解决了。它看起来比 php 手册上的要复杂。 phplover :) 这不是一个好方法。将所有数据提取到数组中更为明智。以上是关于一个查询上的while循环和mysql_fetch_assoc?的主要内容,如果未能解决你的问题,请参考以下文章
PHP / MYSQL:如何在while循环中循环来自查询的匹配结果