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中的键入错误)我已更正了所有内容,它仅显示第一行,其余行为空。有人能帮我纠正所有问题吗?它只显示第一行,其余的行都是空的。有人能帮我吗