您好我正在跟随turtorial在NetTuts上学习CodeIgniter。
我有一个模型,一个视图和一个控制器。
模特:
class Data_model extends CI_Model{
function getAll(){
$data = array();
$q = $this->db->query("SELECT * FROM data");
if($q->num_row() > 0){
foreach($q->result() as $row){
$data[] = $row;
}
return $data;
}
}
}
观点:
<html>
<head>
<title></title>
</head>
<body>
<p>View loaded</p>
<?php
foreach ($rows as $r){
echo '<h1>',$r->title,'</h1>';
}
?>
</body>
控制器:
class Site extends CI_Controller {
function index(){
$this->load->model('data_model');
$data['rows'] = $this->data_model->getAll();
$this->load->view('home');
}
}
问题是我没有收到错误但只是一个空页面。我究竟做错了什么?感觉就像我在教程中做的所有事情一样?
答案 0 :(得分:5)
在控制器中:
$this->load->view('home', $data);
对模型的建议:
function getAll(){
$data = array();
$q = $this->db->query("SELECT * FROM data");
if($q->num_row() > 0){
$data = $q->result(); //result_array() will fetch as arrays and not objects
return $data;
}
}
尝试使用Paul
已经提供的这个:
echo '<h1>' . $r->title . '</h1>';
转到root / index.php并将environment
更改为developing
以查看php生成的错误。
答案 1 :(得分:3)
在模型中,
$q->num_row()
需要更改为
$q->num_rows()
此外,您还需要引用特定列
$data[] = $row->column_name;
在您的控制器中,逗号需要替换为句点。逗号不是正确的语法
foreach ($rows as $r) {
echo '<h1>'.$r->title.'</h1>';
}
最后,您需要通过执行
将$ data变量传递给视图$this->load->view('home', $data);
答案 2 :(得分:2)
此外,我认为在您的视图中您必须进行此更改:
echo '<h1>' . $r->title . '</h1>';
答案 3 :(得分:0)
这确实有效:
class Data_model extends CI_Model{
function getAll(){
$data = array();
$q = $this->db->query("SELECT * FROM data");
$data= $q->result(); //result_array() will fetch as arrays and not objects
return $data;
}
}
但这不是:
class Data_model extends CI_Model{
function getAll(){
$data = array();
$q = $this->db->query("SELECT * FROM data");
if($q->num_row() > 0){
$data= $q->result(); //result_array() will fetch as arrays and not objects
return $data;
}
}
}
但为什么会出现这种情况,这是否正确(这甚至是答案),通过删除此IF语句可以满足哪些后果?