遍历Codeigniter控制器中的数组元素
在php中,当我们编写和执行查询时,我们使用while循环进行迭代遍历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)){
$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
对象,后者是一个关联数组