我什至不知道如何搜索这个。
我有一个数据库,我试图从 4 个表中提取数据。
首先,我从 animal_list 表中获取类别列表。
然后我使用 while 循环从动物表中拉出与类别匹配的动物。
这很好用。它显示分为三个类别的所有动物数据。
现在我正在尝试从其他 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 个值。
无论如何这有效,谢谢大家。