这是我的模特:
<?php
class Dbtest extends CI_Model {
function __construct()
{
// Call the Model constructor
parent::__construct();
}
function getAll() {
parent::Model();
$this->db->select('title, content');
$this->db->from('posts');
$this->db->where('post_id', 1);
$q = $this->db->get();
if($q->num_rows() > 0) {
foreach ($q->result() as $row) {
$data[] = $row;
}
return $data;
}
}
}
<?php
class Dbtest extends CI_Model {
function __construct()
{
// Call the Model constructor
parent::__construct();
}
function getAll() {
parent::Model();
$this->db->select('title, content');
$this->db->from('posts');
$this->db->where('post_id', 1);
$q = $this->db->get();
if($q->num_rows() > 0) {
foreach ($q->result() as $row) {
$data[] = $row;
}
return $data;
}
}
}
这是我的控制器:
这是我的观点
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Dbtest extends CI_Controller {
function index() {
$this->load->model('dbtest');
$data['rows'] = $this->dbtest->getAll();
$this->load->view('dbtest', $data);
}
}
我一直收到500服务器错误。我怎么可能做错了。我已经自动加载了数据库库。请帮助一个codeigniter新手尝试学习这个伟大的框架。
答案 0 :(得分:6)
function getAll() {
parent::Model(); //<-------------------Remove this line
$this->db->select('title, content');
$this->db->from('posts');
快速浏览后,为什么会出现这条线?
这是对旧版本的Model基类的php4构造函数调用,不再存在..
删除并重试。
修改强>
此外,您不能将模型和Controller命名为相同名称,它们具有名称空间冲突。
调用模型Dbtest_model
或其他东西并以这种方式使用它。
此外,这是不必要的
if($q->num_rows() > 0) {
foreach ($q->result() as $row) {
$data[] = $row;
}
return $data;
}
$q->result()
返回一个数组,无需循环并重建......只需这样做......
if($q->num_rows() > 0) {
return $q->result();
}
答案 1 :(得分:1)
经过一些非常糟糕的事情......我终于发现问题出在我的意图之后,在
之后放了一些Varsclass CI_model{}
在我的CI应用程序的核心模型(application / system / core / Model)中,仅适用于Eclipse / aptana / netbeans的自动完成产品。因此,如果您可以从干净的CI安装恢复正常,我认为它应该恢复正常,这是我的最终解决方案。快乐的编码!
答案 2 :(得分:0)
如果您拨打parent::CI_Model();
而不是parent::__construct();
会怎样?
Ci设计用于php4,直到php5才添加__construct()
。