PHP if if while(with mysql)语句不起作用

时间:2014-02-20 18:47:11

标签: php mysql sql conditional

我在我的函数中有这段代码,如果它无法获取存储在变量$ result中的数据,则回显“清空”。 “空”部分工作正常。但是,如果条件进入else部分,它将不会回显用户数据,为什么?

$result = mysql_query("SELECT * FROM `users` ORDER BY `earnings` DESC LIMIT ".$load.",1") or die (mysql_error());
if(!mysql_fetch_row($result)) {
    echo "Empty";
} else {
    while($data = mysql_fetch_array($result))
    {
        if($name == true) {
            echo ucfirst($data['user']);
        } else {
            echo ucfirst($data['earnings']);
        }
    }
}

3 个答案:

答案 0 :(得分:0)

通过调用mysql_fetch_row($result)作为测试,您始终缺少数据的第一行。检查行数是否为0。

答案 1 :(得分:0)

我认为你的问题是在mysql_fetch_array()中。该函数将返回数组而非关联数组..

你可以使用

$result = mysql_query("SELECT * FROM `users` ORDER BY `earnings` DESC LIMIT    ".$load.",1") or die (mysql_error());
if(mysql_num_rows($result) == 0) {
   echo "Empty";
} else {
     while($data = mysql_fetch_array($result,MYSQL_BOTH))
 {
    if($name == true) {
        echo ucfirst($data['user']);
    } else {
        echo ucfirst($data['earnings']);
    }
 }
}

使用mysql_umetch_row的mysql_num_rows来检查空记录集。

我传递mysql_fetch_array中的第二个参数,其中MYSQL_BOTH将返回数组和关联数组..

或者您可以使用

mysql_fetch_assoc()函数不依赖于mysql_fetch_array()..

随意提出问题..

答案 2 :(得分:-1)

试试这个

$result = mysql_query("SELECT * FROM `users` ORDER BY `earnings` DESC LIMIT ".$load.",1") or die (mysql_error());
    if(!$result) {
        echo "Empty";
    } else {
        while($data = mysql_fetch_array($result))
        {
            if($name == true) {
                echo ucfirst($data['user']);
            } else {
                echo ucfirst($data['earnings']);
            }
        }
    }