如果For循环中的条件

时间:2011-11-27 11:11:23

标签: php mysql foreach

我查询了$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声明。任何人都可以提出问题可能是什么?

4 个答案:

答案 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的撇号视为字符串的结尾