大家晚安!
由于某种原因,Database :: fetchArray()正在跳过查询结果集的第一个$行。
它正确地打印所有行,但由于某种原因只会遗漏第一行,我认为我的fetchArray()函数有问题吗?
我在phpMyAdmin中运行查询并返回4行,当我在我的localhost上使用php文件(下面的代码)尝试它时,它只使用相同的'WHERE tunes.riddim'-value ofcourse打印3行。谷歌上最常见的主题表明,常见的错误是在while()之前使用mysql_fetch_array(),这会将指针设置在前面并导致第一行丢失,不幸的是我只有一个mysql_fetch_array()调用(在而() - 头)
<?php
$db->query("SELECT " .
"riddims.riddim AS riddim, " .
"riddims.image AS image, " .
"riddims.genre AS genre, " .
"tunes.label AS label, " .
"tunes.artist AS artist, " .
"tunes.tune AS tune, " .
"tunes.year AS year," .
"tunes.producer AS producer " .
"FROM tunes " .
"INNER JOIN riddims ON tunes.riddim = riddims.riddim " .
"WHERE tunes.riddim = '" . mysql_real_escape_string(String::plus2ws($_GET['riddim'])) . "'" .
"ORDER BY tunes.year ASC");
$ar = $db->fetchArray();
for($i = 0; $i < count($ar) - 1; $i++)
{
echo $ar[$i]['riddim'] . " - " . $ar[$i]['artist'] . " - " . $ar[$i]['tune'] . " - " . $ar[$i]['label'] . " - " . $ar[$i]['year'] . "<br>";
}
?>
Database :: fetchArray()看起来像:
public function fetchArray()
{
$ar = array();
while(($row = mysql_fetch_array($this->result)) != NULL)
$ar[] = $row;
return $ar;
}
任何建议都赞赏!
答案 0 :(得分:3)
您应该从for循环中删除-1
答案 1 :(得分:0)
答案 2 :(得分:0)
你的while循环中的问题:
for($i = 0; $i < count($ar) - 1; $i++)
如果count ($ar)
为1,因为有一个条目,你的循环永远不会被调用;尝试调整检查部分:
for($i = 0; $i < count($ar) ; $i++)