2011-05-11 47 views
0

我有一些代碼在php中按照排序順序訪問mysql數據庫,然後在表中打印出信息。但是,無論何時調用mysql_fetch_array,該函數都不會返回任何內容,即使mysql_num_rows是4.也就是說,如果我做$ row = mysql_fetch_array($ result),則$ row ['name']是「表中的名稱列。代碼片段如下:mysql_fetch_array沒有返回任何內容,但mysql_num_rows返回4在php中

<?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表中有列名,分數,日期等等。 任何幫助表示讚賞。 謝謝, -Michael。

+0

你能格式化你的代碼嗎?選擇您的代碼並按下'{}'按鈕來完成。 – Nemoden 2011-05-11 01:26:15

+0

'&& $ num <= $ number'你爲什麼需要這部分? – zerkms 2011-05-11 01:26:20

+0

你可以在while循環開始後做一個var_dump($ row),並向我們顯示輸出。 – bumperbox 2011-05-11 01:31:41

回答

1

也許試試mysql_fetch_assoc($result)反對mysql_fetch_array($result)

+0

沒有,仍然沒有返回。 – 2011-05-11 01:29:40

+0

這兩個選項都應該在理論上起作用。 – bumperbox 2011-05-11 01:33:01

+0

耶,這工作 - 謝謝! – 2011-05-11 01:36:41

3

$row沒有被設置爲mysql_fetch_array()的結果,它被設置爲mysql_fetch_array() && $num <= $number,這可能等於true。如果你在($row = mysql_fetch_array($result))附近放置了一些括號,它可能會起作用,但是你可以通過將& &移動到包含該時段內容的if語句來節省一些心痛。

看看http://php.net/manual/en/language.operators.precedence.php證實了這一點。 &&具有比賦值更高的運算符優先級,=。但是,and具有較低的優先級。我從來不知道!爲什麼,哦,爲什麼,PHP?

+0

是的,這有效 - 忽略我之前對其他帖子的評論,我的屏幕閱讀器進入了錯誤的編輯框:)。 – 2011-05-11 01:38:01

相關問題