我想从数据库中获取数据并使用CodeIgniter将其显示在网页上。我将我的控制器,模型和视图编码如下。
控制器;
//HomeController
<?php
class HomeController extends CI_Controller
{
public function index()
{
$this->load->model('HomeModel');
$data['records'] = $this->HomeModel->getData();
$this->load->view('HomeView',$data);
}
}
?>
模型;
//HomeModel
<?php
class HomeModel extends CI_Model
{
public function getData()
{
$query = $this->db->query('SELECT * FROM data');
return $query->unbuffered_row('object');
}
}
?>
查看;
//HomeView
<?php
echo "Recoeds from database<br>";
while($records)
{
echo $records->name." ".$records->age."</br>";
}
?>
但是这段代码不会在屏幕上打印任何内容。(echo "Records from database<br>";
)
所以我尝试了CodeIgniter文档中给出的以下代码,并在模型中回显结果,而不是将其返回到控制器,然后返回到视图。它工作正常。
//HomeModel
<?php
class HomeModel extends CI_Model
{
public function getData()
{
$query = $this->db->query('SELECT * FROM data');
while ($row = $query->unbuffered_row())
{
echo $row->name;
echo $row->age;
}
}
}
?>
我的问题是我们如何将unbuffered_row()
方法的结果返回到控制器中,然后根据MVC架构返回到视图?我们可以通过在模型本身回显结果来获得输出,但它违背了MVC架构的目的。
答案 0 :(得分:1)
您应该使用return $query->result();
,然后在视图或控制器中获取正确的对象(由您决定)。
答案 1 :(得分:0)
我在本地模拟你的代码。你的错误就在这里。$ records是对象。你的while循环没有离开循环的条件
<pre>
<?php
var_dump($records);
echo "Recoeds from database<br>";
foreach($records as $value) {
echo $value->name."<br>";
echo $value->age."<br>";
}
?>
</pre>
答案 2 :(得分:0)
试试这个
控制器
<?php
class HomeController extends CI_Controller
{
public function index()
{
$this->load->model('HomeModel');
$data['records'] = $this->HomeModel->getData();
$this->load->view('HomeView',$data);
}
}
?>
模型
<?php
class HomeModel extends CI_Model
{
public function getData()
{
$data = $this->db->query('SELECT * FROM data');
return array('count'=>$data->num_rows(), 'data'=>$data->result(),'first'=>$data->row());
}
}
?>
查看
<?php
echo "Recoeds from database<br>";
foreach($record['data'] as $row)
{
echo $row->name." ".$row->age;
}
?>