Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php For循环中的If条件_Php_Mysql_Foreach - Fatal编程技术网

Php For循环中的If条件

Php For循环中的If条件,php,mysql,foreach,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&

我使用
$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>';      
$loginid=2;
$sql=mysql\u查询('SELECT cc.name,c.fullname,c.userid FROM mdl\u course c,mdl\u coursecat cc其中c.course=cc.id');
回声';
while($row=mysql\u fetch\u数组($sql))
{
$userid=$row['userid'];
回声';
如果($userid==$loginid)
{
回声';
}
其他的
{
echo“你没有权限去”;
}
回声';
}
回声';

我的问题是它没有进入
else
语句中。有人能告诉我问题是什么吗?

第一个非常大的问题是,您使用
$sql
作为数组,但返回一个资源。你需要的是使用。无论如何,因为
$ss
将是数组的一个元素,所以必须根据其类型(数组而不是对象)使用它。因此,您应该有如下内容:

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

   // Do other stuff
}

第二个问题是,在
else

中,您没有跳过句子中的单个引号。第一个非常大的问题是,您使用
$sql
作为数组,但返回了一个资源。你需要的是使用。无论如何,因为
$ss
将是数组的一个元素,所以必须根据其类型(数组而不是对象)使用它。因此,您应该有如下内容:

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

   // Do other stuff
}
第二个问题是,在
else

中将
foreach($sql as$ss)
替换为
while($ss=mysql\u fetch\u object($sql))
中,您没有跳过句子中的单引号。然后循环将实际工作。您不能直接迭代mysql结果集,但需要使用
mysql\u fetch.*
函数之一来检索行

要消除语法错误,请替换
echo“您没有进入权限”使用
echo“您没有进入权限”
回显“你没有权限去”
foreach($sql作为$ss)
替换为
while($ss=mysql\u fetch\u object($sql))
。然后循环将实际工作。您不能直接迭代mysql结果集,但需要使用
mysql\u fetch.*
函数之一来检索行


要消除语法错误,请替换
echo“您没有进入权限”使用
echo“您没有进入权限”
回显“你没有权限去”

这里:
回应“你没有权限去”
替换为
echo“您没有进入权限”

它将
don
的撇号视为字符串的结尾:
echo'you not permissions to go'
替换为
echo“您没有进入权限”

它将“
不”
撇号视为字符串的结尾

我认为问题在于:

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

因为mysql\u fetch\u array()
是一个函数,而不是一个变量。

我认为问题在于:

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

因为mysql\u fetch\u array()
是一个函数,而不是一个变量。

打开错误报告。您的引用也有点混乱…我快速查看后发现两个问题:在
else
块中引用不正确,没有使用
mysql_fetch_对象
,而是直接在mysql结果资源上迭代(这是您无法做到的)。如果您使用带有语法高亮显示的编辑器,那么引号问题将很容易发现……我认为代码现在是正确的,为什么我的else语句在这里不起作用,它在错误报告时显示为emptyTurn。您的引用也有点混乱…我快速查看后发现两个问题:在
else
块中引用不正确,没有使用
mysql_fetch_对象
,而是直接在mysql结果资源上迭代(这是您无法做到的)。如果您使用带有语法突出显示的编辑器,那么引用问题将很容易被发现…我认为代码现在是正确的,为什么我的else语句在这里不起作用,它显示为空,您可以给出建议吗,为什么我的else语句不起作用,它显示为空td@user1067018在放入var_dump($userid)之前,您看到了什么@user1067018我建议您进行var_转储($userid);var_dump($loginid);var_dump($userid==$loginid)来理解发生了什么。您能给我一个建议吗,为什么我的else语句不起作用,它显示为空td@user1067018在放入var_dump($userid)之前,您看到了什么@user1067018我建议您进行var_转储($userid);var_dump($loginid);var_dump($userid==$loginid)来理解发生了什么。实际上,这不是我遇到的问题,我能够正确地获得输出,只有其他方法不起作用。(堆栈溢出中的键入错误)事实上,这不是我遇到的问题,我能够正确地获得输出,只是其他方法不起作用。(Stack overflow中的键入错误)我已更正了所有内容,它仅显示第一行,其余行为空。有人能帮我纠正所有问题吗?它只显示第一行,其余的行都是空的。有人能帮我吗