检查PHP中mysql_fetch_row返回的数组中的值

时间:2011-08-01 12:03:12

标签: php sql

您好我是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');
            }

在数据库中,字段的可能值为null,1或2.代码始终输入else语句。我做错了什么?我应该如何检查mysql_fetch_row返回的数组中的值?

4 个答案:

答案 0 :(得分:1)

这个mysql_fetch_row函数, 返回与获取的行对应的数值数组,并将内部数据指针向前移动。

所以在你的例子中你需要检查它:

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

答案 1 :(得分:1)

首先,您不应该使用mysql_*函数。他们(非正式地)弃用,不建议进一步使用。其次,使用$row["order"]而非$row[order],因为PHP中没有order这样的内容。

此外,mysql_fetch_row将该行作为数字数组返回,而不是关联的。如果您坚持使用mysql_,请使用mysql_fetch_assoc()

除此之外,整个语句应该在while循环中,因为可能有多行丢失。如果您想确保只有1行,请在SQL查询的末尾添加LIMIT 1

答案 2 :(得分:1)

我认为问题出在mysql_fetch_row() ... mysql_fetch_row - 将结果行作为枚举数组。

USE

mysql_fetch_array()

然后

use $row['order']

答案 3 :(得分:0)

我不太确定你问的是什么,但是你可以将你的SQL查询更新为

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

你没需要改变

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