我查询了$userid
$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 :(得分:2)
第一个非常大的问题是您使用$sql
作为数组但mysql_query()返回资源。您需要的是使用mysql_fetch_assoc()。无论如何因为$ss
将是数组的元素,你必须根据它的类型(数组而不是对象)使用它。因此,你应该有类似的东西:
while ($ss = mysql_fetch_assoc($sql))
{
$userid = $ss['userid'];
// Do other stuff
}
第二个问题是你没有在else
中的句子中删除单引号。
答案 1 :(得分: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";
。
答案 2 :(得分:1)
我说问题出在这里:
while($row = $mysql_fetch_array($sql))
因为mysql_fetch_array()
是一个函数,而不是一个变量。
答案 3 :(得分:0)
此处:echo 'you don't have permissions to go';
替换为echo 'you don\'t have permissions to go';
它将don't
的撇号视为字符串的结尾