遍历Codeigniter控制器中的数组元素

遍历Codeigniter控制器中的数组元素,codeigniter,Codeigniter,在php中,当我们编写和执行查询时,我们使用while循环进行迭代 $sql = "SELECT username, role FROM studentlogin WHERE username = '$username' and password = '$password'"; $res = mysql_query($sql); while($row = mysql_fetch_array($res, MYSQL_NUM)){

在php中,当我们编写和执行查询时,我们使用while循环进行迭代

$sql  = "SELECT username, role FROM studentlogin WHERE username = '$username' and password = '$password'";
        $res = mysql_query($sql);

            while($row = mysql_fetch_array($res, MYSQL_NUM)){
                   $uname = $row[0];
                   $stud_role = $row[1];
            }
然后在代码中的某个地方使用变量$uname和$stud_role。我试图在codeigniter中做类似的事情,但失败了

function studentlogin($username, $password)
    {

        $query = "SELECT username, role FROM studentlogin WHERE username = ? and password = ?";
        $result = $this->db->query($query, array($username, $password));

        if($result->num_rows() == 1)
        {               
            return $result;
        }

        else
        {
            return false;
        }
    }
我从控制器调用这个函数,如下所示

$data['info'] = $this->student_model->stdentlogin($username, $password);

问题来了。我尝试使用与上面相同的while循环,但在这里不起作用。如何在控制器中分别访问这两个值?需要一些帮助。

不要返回$result,而是返回$result->row_array()

这将返回您抓取的列的命名哈希。它将是一个单元素数组,因此不需要循环遍历它

有关在codeigniter中获取数据库数据的更多信息,请查看。

在表达式处理循环时对其求值。如果表达式的计算结果为
TRUE
,则循环将继续。如果为
FALSE
,则停止。这不是最好的地方。(顺便说一句,
mysql.*
函数目前在PHP中已被弃用,因此我建议忽略它们的工作方式)

有很多关于如何从数据库检索数据的方便示例和信息。在本例中,如果要检索单行,则应使用
$result->row()
$result->row_array()
,前者将返回一个
stdClass
对象,后者是一个关联数组