while($ row = mysql_fetch_array($ query))不起作用

时间:2011-07-23 17:49:57

标签: php loops while-loop fetch mysql-num-rows

我尝试做的是通过验证cookie(称为“身份识别”)来检查用户的身份。

那是我的代码:

if(!$noCookie) {

$sql = "SELECT * FROM `". TABLE_PREFIX ."_logged` WHERE `logged_cookie` = '". $usersCookie ."' LIMIT 1";
$query = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($query) <= 0) {
    echo 'yes cookie';

    $row = mysql_fetch_array($query) or die(mysql_error());
    print_r($row);

    while ($row=mysql_fetch_array($query)) {
        echo $usersId = $row["logged_user_id"];
    }
} else {
    echo 'no cookie';
}
}

如果用户的cookie与表中的cookie相同,则会发生什么 它将返回用户的ID。

这就是我想要做的事情,IF说“是的cookie”,但在一段时间内它什么都不做! 并没有给我一个错误。

3 个答案:

答案 0 :(得分:1)

由于没有行,因此无法获取任何内容。

if (mysql_num_rows($query) <= 0) {

这应该是> 0吗?

答案 1 :(得分:1)

mysql_fetch_array评估为0或更低时,您才运行mysql_num_rows($query);即没有行

也许你的意思是:

if (mysql_num_rows($query) > 0) { // <-----
    echo 'yes cookie';

    $row = mysql_fetch_array($query) or die(mysql_error());
    // ...
}
else {
    echo 'no cookie';
}

另请注意,您在两个不同的地方运行mysql_fetch_array,这通常是不对的。您的while循环不会包含第一个结果行,因为您在循环之前已经执行过mysql_fetch_array次。

答案 2 :(得分:1)

if(!$noCookie) {

$sql = "SELECT * FROM `". TABLE_PREFIX ."_logged` WHERE `logged_cookie` = '". $usersCookie ."' LIMIT 1";
$query = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($query) > 0) {
    echo 'yes cookie';

    $row = mysql_fetch_array($query) or die(mysql_error());   
    foreach ($row as $r)
       echo $r["logged_user_id"];
} else {
    echo 'no cookie';
}
}