我对 php 和 mysql 很陌生,所以希望有更多经验的人能够在这里给我一些指导。
我有以下代码:
<?php
$npcname = $_GET['npcname'];
$npcinfo="SELECT * from npcs where name='$npcname'";
$npcinfo2=mysql_query($npcinfo) or die("could not get npc!");
$npcinfo3=mysql_fetch_array($npcinfo2);
$listquests = "SELECT * from quests where npcid = '$npcinfo3[npcid]'";
$listquests2 = mysql_query($listquests) or die("No Quests to list");
$listquests3=mysql_fetch_array($listquests2);
echo "<b>Quests Available for ".$npcname."</b><br>";
while($row=mysql_fetch_array($listquests2)) {
echo $row['name'];
}
?>
为此,我有一些看起来像这样的表:
npcs
name|location|npcid
quests
name|qid|npcid
因此任务通过 npcid 字段关联到 NPC。
我在每个表中都有一个条目。
Bob|Scrapyard|1
AND
Sort Scrap Metal|1|1
如您所见,任务和 Bob 的 npcid 均为 1。
在我的循环中,我试图列出 Bob 的所有任务。但是,在运行代码时,我没有列出任何任务。
如果我输入代码:
$listquests3['name'];
在我的循环之外,它成功地显示了预期的“Sort Scrap Metal”。我使用循环的原因是当我添加它们时显示多个任务。
如果有人能好心地看一下代码并告诉我我做错了什么,我将不胜感激。
谢谢。
最佳答案
打印出 SQL 并针对您的数据库运行它以查看获得的结果可能是个好主意。 看看这个,看起来可能只有一个结果是在
$listquests3=mysql_fetch_array($listquests2);
行。由于没有更多结果,因此无需循环。
关于PHP MySQL while循环不返回任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4439237/