これはどうやって探してもわかりません。
4 つのテーブルからデータを取得しようとしているデータベースがあります。
まず、animal_list テーブルからカテゴリのリストを取得します。
次に while ループを使用して、カテゴリに一致する動物を動物テーブルから取り出します。
それはうまくいきます。すべての動物データが 3 つのカテゴリに分類されて表示されます。
現在、他の 2 つのデータベースから動物の属性を取得しようとしています。したがって、animal_id を取得し、skill_per_char テーブルを検索して、animal_id および skill_id とリンクされたスキル ID を見つける必要があります。次に、skills テーブルを検索して、ID に一致するスキルの名前を引き出す必要があります。
個別の SQL 呼び出しを使用してみましたが、各動物のすべてのスキルが表示されるわけではなく、最初のものだけが表示され、スキルを持たない他のすべてのスキルに対してエラーが発生します。そのため、データを表示する別の while ループを追加しようとしましたが、スキルを持つ動物のスキルが表示されず、他のすべてのエラーが発生します。そこで、動物ごとにスキルを検索して表示する for ループを試してみました。結局、3500個のエラーが発生しました。それは続いていたので、プロセスを強制終了しなければなりませんでした。
私はこの種のことで多くのことをしてきましたが、通常はうまくいきますが、今回はいくつかの動物が複数のスキルを持っているので、それらに対して while ループを実行する必要がありますが、うまくいきません。
ありがとう
[[[[編集]]]]
問題を修正しました。正しい方法ではないかもしれませんが、うまくいきます。
これが私がしたことです:
$g = "SELECT * FROM animal_list";
$r = mysqli_query($dbc, $g) or trigger_error("Query: $g\n<br />MySQL Error: " . mysqli_error($dbc));
while ($ani = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
$b = "SELECT * FROM animal WHERE group_id = {$ani['group_id']}";
$B = mysqli_query($dbc, $b) or trigger_error("Query: $b\n<br />MySQL Error: " . mysqli_error($dbc));
echo '<div style="float: left; padding: 20px;">
<table width="800" border="1" cellspacing="2" cellpadding="2" align="center">';
echo '<tr><td colspan="13" align="center"><b>' . $ani['group'] . '</b></td></tr>';
echo '<tr>
<td align="left"><b>Name:</b></td>
<td align="left"><b>Skills:</b></td>
</tr>';
while ($animal = mysqli_fetch_array($B, MYSQLI_ASSOC)) {
echo '<tr>
<td align="left">' . $animal['name'] .'</td>
<td align="left">';
$a = "SELECT skill_id FROM skill_per_char WHERE char_id = {$animal['animal_id']}";
$A = mysqli_query($dbc, $a) or trigger_error("Query: $a\n<br />MySQL Error: " . mysqli_error($dbc));
if (mysqli_num_rows($A) > 0) {
while ($aniskill = mysqli_fetch_array($A)) {
$k = "SELECT name FROM skills WHERE skill_id = {$aniskill['skill_id']}";
$K = mysqli_query($dbc, $k) or trigger_error("Query: $k\n<br />MySQL Error: " . mysqli_error($dbc));
$askill = mysqli_fetch_array($K);
echo '' . $askill['name'] . ' ';
}
}
echo '</td>
</tr>';
}
echo '</table></div>';
}
テーブルが悪いことは知っていますが、これは私の出力では機能します。他のフィールド データを削除しました。動物データベースには合計 12 の値があります。
とにかくこれはうまくいきます、みんなありがとう。