CodeIgniter数据库没有任何反应

时间:2013-09-30 08:18:39

标签: php sql codeigniter

您好我正在跟随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');
 }
}

问题是我没有收到错误但只是一个空页面。我究竟做错了什么?感觉就像我在教程中做的所有事情一样?

4 个答案:

答案 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语句可以满足哪些后果?