Php 无法访问Codeigniter中的变量
Codeigniter框架的新功能。我试图简单地从数据库中读取用户信息,并在视图中的表中显示结果。(我的网站上有6个页面,每个页面我都想显示一些用户数据) 默认控制器:Php 无法访问Codeigniter中的变量,php,codeigniter,model-view-controller,Php,Codeigniter,Model View Controller,Codeigniter框架的新功能。我试图简单地从数据库中读取用户信息,并在视图中的表中显示结果。(我的网站上有6个页面,每个页面我都想显示一些用户数据) 默认控制器: class Pages extends CI_Controller { public function view($page = 'home') { $this->load->helper('url'); $this->load->view('temp
class Pages extends CI_Controller {
public function view($page = 'home') {
$this->load->helper('url');
$this->load->view('templates/header');
$this->load->view('pages/' . $page);
}
public function getUsers(){
$data= array();
$this->load->model('model_users');
$data['users'] = $this->model_users->getUsers1();
$this->load->view('pages/view_users', $data);
}
}
型号:
class Model_users extends CI_Model {
function __construct() {
parent::__construct();
}
function getUsers1(){
$query = $this->db->query('SELECT * FROM user');
if($query->num_rows()>0){
return $query->result();
} else {
return NULL;
}
}
}
视图:
关于发生此错误的原因和解决方法有何建议?请将此代码放入控制器中:
$this->load->view('pages/view_users',$data);
那么
您可以这样做:
public function getUsers(){
$this->load->model('model_users');
$users = $this->model_users->getUsers1();
$this->load->view('pages/view_users', compact('users');
}
更干净,如果你将来需要改变,这将很容易
和访问您的页面:localhost/your_site/getusers
但是,如果要使用此标准,请使用。因为URL中的“getusers”并不漂亮。您的代码是正确的。但如果查询返回空结果,则此处的
$users
变为NULL
,因此在查看时会出现错误。将if
置于foreach
之前。请参阅下面的代码
<table>
<tr>
<td><strong>user ID</strong></td>
</tr>
<?php
if(!empty($users)){ foreach ($users as $user) { ?>
<tr>
<td><?php echo $user->id; ?></td>
</tr>
<?php }}else{ ?>
<tr>
<td>No record found</td>
</tr>
<?php } ?>
</table>
首先尝试数组是否给出任何结果
public function getUsers(){
$this->load->model('model_users');
$data['users'] = $this->model_users->getUsers1();
print_r($data['users']);
}
无法发表评论:/ 您将收到错误,因为您正以以下方式从浏览器地址栏直接访问视图文件:
localhost/projectname/page/view_users
请访问控制器的操作,例如:
localhost/projectname/page/getUsers
你也应该读一些关于路线的书只要比我快几秒钟!!在我当前的代码中已经有你的建议。。。但它不起作用……我已经在问题的末尾键入了错误。谢谢。@Saty,但OP仍然没有得到解决方案。@Irfana删除这个$data=array();和try您正在检查的url是什么?需要使用该行代码来允许加载页面。可能是您的查询没有返回任何记录。我尝试使用您的代码,然后使用localhost/book/getusers,但无效。错误写在问题的末尾。我做了您建议的修改,现在它仍然给出错误,并且显示“未找到记录”。有什么建议吗?@Irfana检查一下你的桌子。有记录吗?@PathikVejani是的,我的表中有记录。@Irfana更改此
return$query->result()
toreturn$query->result_array()代码>您也更新了模型了吗?和@PathikVejani:不需要将结果更改为刚刚检查过的结果,数组给出结果并显示表数据。问题是视图页面(view_users.php)没有从controller接收$data。是的,我将在您建议的链接中获得结果,但是我确实丢失了所有引导和模板。我只会在屏幕上获得一个数组,其中包含来自表的用户信息。你应该在标记中写入适当的链接,因为如果我使用localhost/projectname/view\u users,你会觉得我的网站工作正常。。。我只需要找到一种方法,使view_users.php接收$data。有什么建议吗?我有你建议的样式链接。问题是您建议访问我的URL中的函数。。。这样我就不会再访问我的任何页面了!尝试localhost/book/page/getUsers并添加标题视图公共函数getUsers(){$data=array();$this->load->model('model_users');$data['users']=$this->model_users->getUsers1();$this->load->view('pages/view_users',$data);}
class Model_users extends CI_Model {
function __construct() {
parent::__construct();
}
function getUsers1(){
$query = $this->db->query('SELECT * FROM user');
if($query->num_rows()>0){
return $query->result();
} else {
return [];
}
}
}
localhost/projectname/page/view_users
localhost/projectname/page/getUsers