まず、テーブル内を調べて最後の10個のエントリを取得して表示します。出力は期待どおりで、データベースの最後の10個のエントリのリストです。whileステートメント内のselectステートメント
$query = "SELECT dfid FROM downloads_downloads ORDER BY did DESC limit 10";
$dlresult = mysql_query($query);
$i=0;
$num = mysql_num_rows ($dlresult);
while ($i < $num) {
$dfid= mysql_result($dlresult,$i,"dfid");
echo "<b>filenumber:</b> $dfid <br>";
++$i;
}
しかし、私は単にファイル番号を必要としません。私は別のテーブルから実際のファイル名とURLが必要です。そこで、ファイル番号を使ってwhileステートメントの中にselectステートメントを追加しました。
しかし、何らかの理由で、このコードでは10個ではなく1個のファイル名しか表示されません。上記のコードから10個のファイル番号がすべて取得されています。
$query = "SELECT dfid FROM downloads_downloads ORDER BY did DESC limit 10";
$dlresult = mysql_query($query);
$i=0;
$num = mysql_num_rows ($dlresult);
while ($i < $num) {
$dfid= mysql_result($dlresult,$i,"dfid");
$query2 = "SELECT file_name, file_name_furl FROM downloads_files WHERE file_id = '$dfid'";
$dlresult2 = mysql_query($query2);
$dlfile_name= mysql_result($dlresult2,$i,"file_name");
$dlfile_name_furl= mysql_result($dlresult2,$i,"file_name_furl");
echo "filenumber: $dfid <br>"; //Shows 10, as expected.
echo "filename: $dlfile_name - $dlfile_name_furl <br>"; //Shows only 1?
++$i;
}
私は手動でSQL文を実行し、テーブルからfile_nameとfile_name_furlを取り出すことができます。したがって、データは正しいです。 PHPはwhileステートメント内のselectを好きではありませんか?
SQLを再作成して結合しないのはなぜですか? – Luceos