2011-08-01 34 views
0

您好,我是PHP新手。檢查mysql_fetch_row返回的數組中的值PHP

$res=mysql_query('SELECT `order` FROM `competitions`'); 
    $row=mysql_fetch_row($res); 

    if($row[order] == "1") 
      { 
      $res=mysql_query('SELECT `name`, `persp`, `teamp` FROM  `competitions_rank` WHERE `comp_id` = '.$_PARAMS[0].' ORDER BY `persp` DESC'); 
      } 
    else 
      { 
      $res=mysql_query('SELECT `name`, `persp`, `teamp` FROM `competitions_rank` WHERE `comp_id` = '.$_PARAMS[0].' ORDER BY `teamp` DESC'); 
      } 

在數據庫中該字段的可能值爲空,1或2。該代碼總是在else語句中輸入。我做錯了什麼?我應該如何檢查由mysql_fetch_row返回的數組中的值?

回答

1

mysql_fetch_row功能, 返回數值陣列對應於所述提取的行和向前移動所述內部數據指針。

所以在您的例子中,你需要檢查它喜歡:

if ($row[0] == "1") 
1

嗯,首先,你不應該使用mysql_*功能。它們(非正式)不推薦使用,不建議使用。其次,使用$row["order"]而不是$row[order],因爲在PHP中沒有order這樣的東西。

另外,mysql_fetch_row返回該行作爲數字數組,而不是關聯。如果您堅持使用mysql_,請使用mysql_fetch_assoc()

除此之外,整個語句應該在while循環中,因爲可能會有多於一行的代碼丟失。如果您想確保只有1行,請將LIMIT 1添加到SQL查詢的末尾。

+0

這也不是工作。什麼是mysql *函數的替代方法? –

+0

@Grigori Rangelov就像我說的,你不應該使用'mysql_ *'考慮重寫你的數據庫編碼風格到'PDO'或者至少到'mysqli'。它可以幫助你以後的項目! –

1

我認爲問題出在mysql_fetch_row() ... mysql_fetch_row - 將結果行作爲枚舉數組獲取。

使用

mysql_fetch_array() 

然後

use $row['order'] 
0

我不太清楚你問什麼,但你可以更新您的SQL查詢來

$res=mysql_query('SELECT `order` FROM `competitions ORDER BY order`'); 

如果做不到這一點,你需要改變

if($row[ 'order' ] == "1")