Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL while循环不返回任何内容_Php_Mysql_Database_While Loop - Fatal编程技术网

PHP MySQL while循环不返回任何内容

PHP MySQL while循环不返回任何内容,php,mysql,database,while-loop,Php,Mysql,Database,While Loop,我对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

我对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'];


}
?>
因此,任务通过npcid字段与NPC关联

每个表中有一个条目

Bob|Scrapyard|1
AND
Sort Scrap Metal|1|1
如您所见,任务和Bob都共享1的npcid

在我的循环中,我试图列出鲍勃的所有任务。但是在运行代码时,我没有列出任何任务

如果我输入代码:

  $listquests3['name'];
在我的循环之外,它成功地按预期显示“分类废金属”。我使用循环的原因是在添加任务时显示多个任务

如果有人能看一下代码,告诉我我做错了什么,我将不胜感激


谢谢。

打印SQL并在数据库中运行此命令,以查看得到的结果可能是个好主意。 从这个角度看,看起来可能只有一个结果是在

$listquests3=mysql_fetch_array($listquests2);

线路。因为没有更多的结果,所以没有什么可以循环。

结果已经被获取,因为只有一条规则,而您是在$listquests3:)中获取的。我想,如果你去掉那条线,它就会起作用。

你需要做一个内部连接或左连接。是的,在再次仔细查看该问题后,我发现在第一次执行“
mysql\u fetch\u array()
”代码时(就在“
while
”循环之前),变量“
$listquests2
”的值丢失了。因此,“
while
”循环没有任何效果


必须删除变量“
$listquests3
”的这一行。

您只有一行,并且在第一次调用
mysql\u fetch\u array
时获取了该行。当您第二次调用它时,结果集中不再有要获取的行,函数返回false,循环退出。

此语句:“$listquests3=mysql\u fetch\u array($listquests2);”已获取第一行。因为您只有一个,所以没有更多要获取的内容,所以下一次调用mysql\u fetch\u数组将不会返回任何内容


这应该可以解决问题,但就您自己的“经验”而言,这可能是开始学习MySQL连接(特别是左连接)的好时机。你可以很容易地在网上找到很多关于它的信息

+1用于为你的第一个项目制作任务和npc。示例代码易受攻击,这是一个非常严重的问题。要修复此漏洞,请将过时的mysql驱动程序切换到并使用。如果您需要PDO教程,请尝试。您保存的站点可能只是您自己的站点。至于。确保你读到了,正如其他人提到的。在一个人愿意做的时候发布多个语句是低效的,也是浪费资源的。让数据库处理数据操作,让程序处理其他一切。最后,不要使用;只选择您需要的列。感谢您提供的提示。我确实会阅读PDO的文章,为了提高效率,我会转向加入。啊,非常感谢!我没有意识到,当我获取初始结果时,我会将其排除在进一步获取的范围之外。如果我给出了正确的答案,那么(否决我答案的人)可以纠正它吗?
$listquests3=mysql_fetch_array($listquests2);