一个查询上的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?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 中的 While 循环使用连接和子查询选择数据

使用 For 和 While 循环更新查询

sql 中流程控制语句的关键字都有哪些

PHP / MYSQL:如何在while循环中循环来自查询的匹配结果

javascript中,while循环与for循环执行效率上的差异?

foreach循环和while循环之间的mongoDB游标区别