简单的mysql查询只返回一行

时间:2009-07-21 21:24:08

标签: php sql mysql

我有下表:

CREATE TABLE IF NOT EXISTS `notes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(10) unsigned NOT NULL DEFAULT '0',
`note` text,
PRIMARY KEY (`id`)
)

INSERT INTO `notes` (`id`, `uid`, `note`) VALUES
(1, 1, 'noteteeext'),
(2, 1, 'notenotenotenote');

正如你所看到我有2行uid = 1但它只返回1行! (第二个)

$sql = "SELECT id,uid,note
                    FROM notes
            WHERE uid = 1";
$result = mysql_query($sql);


while ($row = mysql_fetch_assoc($result)) {
 echo $row['note'];
}

怎么了? :/

4 个答案:

答案 0 :(得分:6)

没有看到任何明显的东西,所以我会选择简单的东西:

有你:

  • 直接在db中查看确定你确实有两行?
  • 在预期的列中验证了这两行是否包含您期望的数据?
  • 可能是第一条记录是以某种方式自动检索的,所以你实际上是在你的while循环条件下进入第二条记录了吗?
  • 如果添加第三行会怎样?如果您得到1或2个结果,无论哪种方式,它都可能提供一些额外信息。

远射这些,但也许会有所帮助。

答案 1 :(得分:6)

你确定在你正在运行的实际代码中的while循环之前肯定没有$row = mysql_fetch_assoc($result)吗?

显然,如果您上面发布的代码正是您正在运行的代码,那么这不是问题,但这可能是此行为的最常见原因。

答案 2 :(得分:3)

你确定你没有错过,因为你没有添加任何换行符,因为它全部写入一行吗?

加。由于uid的类型是INT,你应该写

WHERE uid = 1

而不是

WHERE uid = '1'

答案 3 :(得分:0)

您是否检查并分析了PHP输出的来源?也许第一行会在某处HTML中丢失。

如下面的答案所述,如果发布的代码完全您正在运行的代码,情况并非如此,但如果那里有一些HTML代码,则可能会发生这种情况