大家好,我是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返回的数组值?
首先,你不应该使用mysql_*
函数。它们(非正式地)已被弃用,不建议进一步使用。其次,使用$row["order"]
而不是$row[order]
,因为PHP中没有order
这样的东西。
同样,mysql_fetch_row
返回行作为一个数字数组,而不是关联数组。如果你坚持使用mysql_
,那就使用mysql_fetch_assoc()
。
除此之外,整个语句应该在while循环中,因为可能有不止一行您丢失了。如果您想确保只有一行,请在SQL查询的末尾添加LIMIT 1
。
此mysql_fetch_row
函数,返回一个数值数组,该数组对应于所获取的行,并将内部数据指针向前移动。
所以在你的例子中你需要像这样检查:
if ($row[0] == "1")
我认为问题是在mysql_fetch_row()
…mysql_fetch_row
-获取结果行作为枚举数组
mysql_fetch_array()
然后use $row['order']
我不太确定你在问什么,但你能更新你的sql查询
$res=mysql_query('SELECT `order` FROM `competitions ORDER BY order`');
如果不需要更改
if($row[ 'order' ] == "1")