2011-11-27 89 views
0

我有一个查询与$userid如果条件一个FOR循环内

$loginid = 2; 
$sql = mysql_query('SELECT cc.name, c.fullname, c.userid FROM mdl_course c, mdl_coursecat cc WHERE c.course = cc.id'); 
echo '<table>'; 
while($row = mysql_fetch_array($sql)) 
{ 
    $userid = $row['userid']; 
    echo '<tr><td>'; 
    if($userid == $loginid) 
    { 
    echo '<a href="">go to course</a>'; 
    } 
    else 
    { 
    echo 'you dont have permissions to go'; 
    } 
    echo '</td></tr>'; 
} 
echo '</table>';  

我的问题是检查,它的不else语句中去。任何人都可以提出问题可能是什么?

+0

打开错误报告。你的报价有点混乱... –

+0

我在快速浏览中看到2个问题:在你的'else'块中引用不正确,不使用'mysql_fetch_object',而是直接迭代mysql结果资源(你不能这么做)。如果您使用语法突出显示的编辑器,引用问题很容易被发现... – ThiefMaster

+0

我认为代码现在是正确的,为什么我的其他语句不在这里工作,它显示为空 – user1067018

回答

2

第一个很大的问题是,您使用$sql作为数组,但mysql_query()返回资源。你需要的是使用mysql_fetch_assoc()。无论如何,因为$ss将是数组的元素,您必须根据其类型(数组和非对象)使用它。因此,你应该有这样的:

while ($ss = mysql_fetch_assoc($sql)) 
{ 
    $userid = $ss['userid']; 

    // Do other stuff 
} 

第二个是,你也没能逃脱你的句子里面的单引号的else

+0

您可以给出建议,为什么我的else语句是不是wotking,它显示空td – user1067018

+0

@ user1067018你如果在你把var_dump($ userid)放在IF之前看到了什么? ? –

+0

它正确地显示了用户ID,即3,6,8等, – user1067018

1

foreach($sql as $ss)替换为while($ss = mysql_fetch_object($sql))。然后循环将实际上工作。您不能直接遍历mysql结果集,但需要使用mysql_fetch_*函数之一来检索一行。

要消除语法错误,请用echo 'you don\'t have permissions to go';echo "you don't have permissions to go";替换echo 'you don't have permissions to go';

+0

事实上,这不是Iam得到的问题,Iam能够正确地获得输出,只有其他工作不正常。 (堆栈溢出中的输入错误) – user1067018

0

这里:echo 'you don't have permissions to go'; 替换echo 'you don\'t have permissions to go'; 它看到的don't撇号作为字符串的结尾

+0

我已更正所有内容,它仅显示第一行,其余行显示为空。任何人都可以帮助我 – user1067018

1

我想说的问题就在这里:

while($row = $mysql_fetch_array($sql)) 

mysql_fetch_array()是一个函数,而不是一个变量。