首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否不显示数据库中的第一条记录?

问是否不显示数据库中的第一条记录?
EN

Stack Overflow用户
提问于 2012-06-07 08:03:01
回答 3查看 1K关注 0票数 0

尝试在客户网站上工作,但我遇到了一些困难。当我在数据库中没有条目时,它在if(!row)捕获并显示消息。这部分运行得很好。我的问题是,当我在数据库中有条目时,它们不会显示。我知道while循环是有效的,因为我有几个页面运行类似的循环。实际上,这个循环是从另一个在公共页面上显示此条目信息的页面复制而来的。

我知道这个网站主要是用来提问的,但我想我只是需要一双新的眼睛来看看我的代码(我已经写了超过12个小时的代码,我有点累了)。下面的许多代码来自以前的网页设计师,如果由我决定,我会重写整个网站,因为代码“过时了”,但客户只是想让我改进它。任何帮助都将不胜感激。

代码语言:javascript
复制
$row = mysql_fetch_array($result);

if (!$row) {
    echo '<tr><td bgcolor="ffffff" colspan="3"><font face="arial,helvetica" size="2" color="000000">There are no entries at this time, check back later.</font></td></tr>';
} else {
    while ($row = mysql_fetch_array($result)) {

        echo '<tr>
                    <td bgcolor="ffffff"><font face="arial,helvetica" size="2" color="000000">$date - $row["theme"]</font></td>
                    <td bgcolor="ffffff" align="center">
                    <form action="dsp_modifyposition.php">
                        <input type="hidden" name="specialID" value="$row["specialID"]">
                        <input type="hidden" name="theme" value="$row["theme"]">
                        <input type="submit" value="  Modify  ">
                    </form>
                    </td>
                    <td bgcolor="ffffff" align="center">
                    <form action="act_deleteposition.php" onsubmit="return confirm(\'Are you sure you want to delete this event: $date \')">
                        <input type="hidden" name="specialID" value="$row["specialID"]">
                        <input type="hidden" name="theme" value="$row["theme"]">
                        <input type="submit" value="  Delete  ">
                    </form>
                    </td>
                </tr>';
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-07 08:16:52

当您第一次调用mysql_fetch_array时,mysql结果指针将移动到下一行。由于未对此行执行任何操作,因此不会显示第一行。您想要的是mysql_num_rows检查结果集中有多少行。作为附注,如果您不使用数字索引,我建议使用mysql_fetch_assoc。

代码语言:javascript
复制
if (!mysql_num_rows($result)) {
    echo '...';
} else {
    while ($row = mysql_fetch_assoc($result)) {
        echo '...';
    }
}
票数 3
EN

Stack Overflow用户

发布于 2012-06-07 08:13:55

将您的第一行更改为:

代码语言:javascript
复制
$cnt = mysql_num_rows($result)

if (!$cnt) {
    echo '<tr><td bgcolor="ffffff" colspan="3"><font face="arial,helvetica" size="2" color="000000">There are no entries at this time, check back later.</font></td></tr>';
} else {
....
票数 1
EN

Stack Overflow用户

发布于 2012-06-07 08:12:45

您的if()语句似乎有缺陷。声明:

代码语言:javascript
复制
$row = mysql_fetch_array($result);

将获取一行并将$result中的指针移动到下一行,因此while将从第二行开始。如果查询只返回一行,那么实际上就是调用mysql_fetch_array()两次并跳过返回的数据。

您应该找到其他方法来检查是否有结果(可能使用mysql_num_rows())。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10923983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档