저는 PHP와 MySQL에 익숙합니다. 경험이 많은 분이라면 여기에 약간의 지침을 줄 수있을 것입니다.PHP MySQL while 루프는 아무 것도 반환하지 않습니다
<?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'];
}
?>
이 갈 I는 다음과 같이 whcih 일부 테이블이 있습니다 :
npcs
name|location|npcid
quests
name|qid|npcid
그래서 퀘스트가 npcid 필드를 통해 NPC에 관련되어
나는 다음과 같은 코드가 있습니다.
각 테이블마다 하나의 항목이 있습니다.
Bob|Scrapyard|1
AND
Sort Scrap Metal|1|1
퀘스트를 볼 수 있고 밥은 모두 내가 밥의 퀘스트를 모두 나열하려고 내 루프 1.
의 npcid을 공유한다. 그러나 코드를 실행하면 퀘스트가 나열되지 않습니다. 성공적으로 예상대로 "정렬 금속 스크랩"표시 내 루프의
$listquests3['name'];
외부 : 내가 코드를 넣으면
. 루프를 사용한 이유는 내가 추가 할 때 여러 퀘스트를 표시하기 위해서입니다.
누군가가 코드를 살펴보고 내가 잘못한 것을 말해 주면 감사 할 것입니다.
감사합니다.
+1 첫 번째 프로젝트 (들) 중 하나에 퀘스트가 포함되어 있고 npc가 생성되었습니다. –
샘플 코드는 [SQL 주입] (http://unixwiz.net/techtips/sql-injection.html)에 취약하며 매우 심각한 [보안 위험]입니다 (http://bobby-tables.com/) . 이 구멍을 수정하려면 오래된 MySQL 드라이버에서 [PDO] (http://php.net/PDO)로 전환하고 [prepared statements] (http://www.php.net/PDO.prepared-statements)를 사용하십시오. PDO 튜토리얼이 필요하면 [ "PHP와 PDO로 MySQL 스크립트 작성하기"(http://www.kitebird.com/articles/php-pdo.html)]를 시도하십시오. 저장하는 사이트는 귀하의 사이트 일 수 있습니다. [''die''에 대해서는 HTMl을 출력 할 때 사용하지 마십시오.] (http://www.phpfreaks.com/blog/or-die-must-die). – outis
다른 사람들이 언급했듯이 [joins] (http://en.wikipedia.org/wiki/Join_%28SQL%29)에 대해 읽어보십시오. 많은 명령문을 발행 할 때 비효율적이며 자원을 낭비합니다. 데이터베이스가 데이터 조작을 처리하게하고 프로그램이 다른 모든 것을 처리하게하십시오. 마지막으로 ['SELECT *'] (http://stackoverflow.com/questions/321299/what-is-the-reason-not-to-use-select)를 사용하지 마십시오. 필요한 열만 선택하십시오. – outis