PHP while循环返回null结果

时间:2012-06-15 15:44:57

标签: php mysql

$connect_status = "SELECT connected_to_id FROM tbl_connect WHERE user_id = 
{$_SESSION['user_id']}";

$exec_connstatus_query = mysql_query($connect_status, $db_connect);

while($check_status = mysql_fetch_array($exec_connstatus_query))
{   
  if ($check_status['connected_to_id'] == $profileid)
  {
    echo "{$check_status['connected_to_id']}";
  }
  else
  {
    echo "fail";
  }
}

这段代码让我困扰了3个小时。这里的问题就是这个条件:

if ($check_status['connected_to_id'] == $profileid)

返回false,当else语句执行时,我无法看到“失败”。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

mysql_query()在出错时返回FALSE,循环根本不会执行。如果$ _SESSION ['user_id']不是数字,则会发生这种情况。为什么不呢

$connect_status = "SELECT connected_to_id FROM tbl_connect WHERE user_id ='$_SESSION[user_id]'";

如果没有(更多)行,则ditto mysql_fetch_array()返回FALSE。如果您的会话在 tbl_connect 中不存在,则循环将不会执行。你不想要这样的东西:

$connect_status = "SELECT connected_to_id FROM tbl_connect 
                   WHERE user_id ='$_SESSION[user_id]' LIMIT 1";
$exec_connstatus_query = mysql_query($connect_status, $db_connect);
if( ($check_status = mysql_fetch_array($exec_connstatus_query)) && 
    ($check_status['connected_to_id'] == $profileid) ) {
    echo "{$check_status['connected_to_id']}";
} else {
    echo "fail";
}

答案 1 :(得分:0)

我建议你先检查一下$exec_connstatus_query,因为可能是你的查询没有正确执行,这就是为什么控制没有在循环中进入。你的回答是空的。打印$ exec_connstatus_query并先检查。
或者,如果查询返回Zero记录,那么循环将不会运行。