2011-08-01 35 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")