皆様こんばんは!
何らかの理由で Database::fetchArray() がクエリ結果セットの最初の $row をスキップしています。
それはすべての行を適切に出力しますが、何らかの理由で最初の行だけを見逃し続けます。私の fetchArray() 関数に何か問題があると思いますか?
phpMyAdmin でクエリを実行すると、4 行が返されました。php ファイル (以下のコード) を使用してローカルホストで試したところ、もちろん同じ 'WHERE tunes.riddim' 値を使用して 3 行しか出力されませんでした。Google のほとんどの同様のトピックは、よくある間違いが while() の前に mysql_fetch_array() を使用することであることを示しています。これにより、ポインターが先に設定され、最初の行が失われます。 while()-頭)。
<?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;
}
どんな提案でも大歓迎です!