数据库查询结果有不同的变量,原因是什么?

时间:2015-08-18 06:33:55

标签: php mysql codeigniter

在帖子Codeigniter result_array() returning one row https://stackoverflow.com/users/315828/xbonez回答就像这样

function getAllUsers()
{
$rows = array(); //will hold all results
$query = $this->db->get('users');

foreach($query->result_array() as $row)
{    
    $rows[] = $row; //add the fetched result to the result array;
}

return $rows; // returning rows, not row
}

在您的控制器中:

$data['users'] = $this->yourModel->getAllUsers();
$this->load->view('yourView',$data);

在你看来

//在您的视图中,$ users是一个数组。迭代它

<?php foreach($users as $user) : ?>

<p> Your first name is <?= $user['fName'] ?> </p>

<?php endforeach; ?>

从控制器发起查询,查询结果在$data['users'],但在视图中我们正在以$users进行迭代。为什么会这样?

3 个答案:

答案 0 :(得分:1)

在codeigniter(或者像cakePHP这样的mvc框架)中,我们在Controller中使用键和值构建数组。然后将其传递给变量查看。

因此RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L] 将转到视图并以$data['users']=array(key=>val)进行访问。

仔细查看控制器中的所有变量键(例如echo $users['key']这里用户是关键的)成为视图中的实际变量(例如$data['users']),这就是我们称之为MVC结构的原因。

答案 1 :(得分:1)

如果您在控制器中设置,

$data['users'] = $this->yourModel->getAllUsers();
$this->load->view('users',$data);    //first argument will be passed to view as $users

在您的视图中,您将调用参数

<?php foreach($users as $user) : ?>
<p> Your first name is <?= $user['fName'] ?> </p>
<?php endforeach; ?>

答案 2 :(得分:1)

只需检查loader.php中的system/core并找到"public function view",它就会回答您的问题。