2011-05-11 10 views
0

mysql 데이터베이스에 정렬 된 순서로 액세스하는 PHP 코드를 테이블에 인쇄합니다. 그러나 mysql_fetch_array를 호출 할 때마다 함수는 아무것도 반환하지 않습니다. mysql_num_rows가 4인데도 아무 것도 반환하지 않습니다. 즉, $ row = 'mysql_fetch_array ($ result);를 수행하면 $ row ['name ']은 테이블의 이름 열. 코드 스 니펫은 다음과 같습니다.mysql_num_rows가 PHP에서 4를 반환하는 동안 mysql_fetch_array는 아무 것도 반환하지 않습니다.

<?php 
include_once("include.php"); 
$number=0; 
if(!isset($_GET['scores'])) { 
    $number=10; 
} 
else if((int)$_GET['scores']>100) { 
    $number=100; 
} 
else if((int) $_GET['scores']<0) { 
    $number=10; 
} 
else { 
    $number=(int) $_GET['scores']; 
} 

$con=mysql_connect($dbhost, $dbuser, $dbpass); 
mysql_select_db($dbname, $con); 
$result=mysql_query("SELECT * FROM ".$dbtable_scores." ORDER BY score DESC,date;", $con); 
$num=1; 
echo("<table>"); 
echo("<tr><td>position</td><td>Name</td><td>score</td><td>date</td></tr>"); 
while($row=mysql_fetch_array($result) && $num<=$number) { 
    echo("<tr>"); 
    echo("<td>".$num."</td>"); 
    echo("<td>".$row['name']."</td><td>".$row['score']."</td><td>".$row['date']."</td>"); 
    echo("</tr>"); 
    $num++; 
} 
echo("</table>"); 
mysql_close($con); 
?> 

mysql cli에서 쿼리를 검사했는데 제대로 작동하는 것 같습니다. 그러나 http://mtgames.org/index.php으로 가면 테이블에 mysql에서 생성되지 않은 숫자 만 표시됩니다. mysql 테이블에는 이름, 점수, 날짜 등이있다. 도움을 주시면 감사하겠습니다. 감사합니다. - 마이클.

+0

코드를 포맷 할 수 있습니까? 코드를 선택하고'{}'버튼을 누르면됩니다. – Nemoden

+0

'&& $ num <= $ number' 왜이 부분이 필요합니까? – zerkms

+0

while 루프를 시작한 후에 var_dump ($ row)를 수행하고 출력을 표시 할 수 있습니까? – bumperbox

답변

1

에 반하여 mysql_fetch_assoc($result) 일 수 있습니다.

+0

아니요, 여전히 아무것도 반환하지 않습니다. –

+0

두 옵션 모두 이론적으로 작동해야합니다. – bumperbox

+0

예, 작동합니다 - 고마워요! –

3

$rowmysql_fetch_array()의 결과로 설정되어 있지 않으므로 mysql_fetch_array() && $num <= $number으로 설정되어 있으며 이는 아마도 true과 같습니다. ($row = mysql_fetch_array($result)) 주위에 괄호를 넣으면 작동하지만, & &을 while의 내용을 감싸는 if 문으로 이동하면 약간의 번거 로움을 덜 수 있습니다.

http://php.net/manual/en/language.operators.precedence.php에서 확인하십시오. &&은 할당보다 높은 연산자 우선 순위가 있습니다 (=). 그러나 and의 우선 순위가 낮습니다. 나는 결코 그것을 알지 못했다! 왜, 오, 왜?

+0

그래, 그 작품 - 다른 게시물에 대한 내 이전의 의견을 무시하고, 내 스크린 리더 잘못된 편집 필드에 갔다 :). –

관련 문제