2012-06-15 126 views
0
$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个小时。这里的问题是,即使这个条件:PHP循环返回空结果

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

返回false,我没能看到“失败”的else语句执行的时候。有任何想法吗?

+1

你确定循环正在执行? –

+0

该connected_to_id字段中可以包含哪些值,$ profileid中的值是多少? PHP会认为许多比较是TRUE,即使任何合理的人都不会,例如数据库中的字段为NULL,$ profileid为“0”或空字符串。 –

+0

这是你的全部代码吗?如果你回显$ check_status ['connected_to_id']和$ profileid,它们显示什么?是否应该有另一个'}'来关闭while循环,或者是否错过了这个问题。 – phenomnomnominal

回答

0

我建议你先检查$exec_connstatus_query,因为它可能是你的查询没有正确执行,这就是为什么控制没有进入循环内部。而你的回应为空。打印$ exec_connstatus_query并首先检查。
或万一如果查询返回零记录,在这种情况下循环将不会运行。

+0

谢谢!顺便说一句我来自印度,想加入一个项目? – PHPSrike

+0

如果我觉得它适合我,那么当然.. –

+0

与你联系? – PHPSrike

1

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

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

同上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"; 
} 
+0

它是纯粹的rand()MAX 10 Digit INT Value .. – PHPSrike

+0

查看反映评论的更新 – TerryE

+0

是指?.......... – PHPSrike