如何获取codeigniter 3中列的值列

时间:2016-01-22 16:11:12

标签: mysql codeigniter

我有一张表:

sysopt|sysval
......................     
site_url|http://domain.com/
site_title|My Website
......................
在mysql中我使用:

$query = $db->query("SELECT * FROM sysconfig");
while ($result = $db->fetch_array($query)) {
    $settings[$result['sysopt']] = $result['sysval'];
}

但在CI:

class Sysinfo
{
    var $info = array();

public function __construct() 
{
    $CI =& get_instance();
    $settings = $CI->db->select("*")
    ->get("sysconfig");
    foreach($settings as $setting) {
        $this->info[$setting['sysopt']] = $setting['sysval'];
    }
}

在视图中我打电话:

<?php echo $this->Sysinfo->info->site_url; ?>

显示错误。

Message: Undefined property: CI_Loader::$Sysinfo

谢谢你解决任何问题。

2 个答案:

答案 0 :(得分:2)

为什么不延长CI_Model?对我来说,在框架中......只需扩展类,这样你就会更容易

在你的模特中:

class Sysinfo extends CI_Model
{
    var $info = array();

    public function __construct() 
    {
        //$CI =& get_instance();
        $settings = $this->db->select("*")
        ->get("sysconfig")->result_array(); //Return result as array
        foreach($settings as $setting) {
            $this->info[$setting['sysopt']] = $setting['sysval'];
        }
    }

    function get_sysinfo_data()
    {
         return $this->info;
    }
}

在您的控制器

public function __construct()
{
    $this->load->model('Sysinfo');
}
function index()
{
    $data['arr_result'] = $this->Sysinfo->get_sysinfo_data();
    $this->load->view('your_view',$data);
}

在视图中:

foreach($arr_result as $row_array):
     var_dump($row_array); // To view your result
endforeach;

如果你想Sysinfo作为库......那就这样:

您的图书馆名称为Sysinfo.php

class Sysinfo
{
    var $info = array();

    public function __construct() 
    {
        $CI =& get_instance();
        $settings = $CI->db->select("*")
        ->get("sysconfig")->result_array(); //Return result as array
        foreach($settings as $setting) {
            $this->info[$setting['sysopt']] = $setting['sysval'];
        }
    }

    function get_sysinfo_data()
    {
         return $this->info;
    }
}

在您的控制器中:

public function __construct()
{
    $this->load->library('Sysinfo');
}
function index()
{
    $data['arr_result'] = $this->Sysinfo->get_sysinfo_data();
    $this->load->view('your_view',$data);
}

希望它有所帮助。

答案 1 :(得分:0)

错误正在显示,因为您没有使用CI_Model基类扩展您的类。

尝试将您的课程定义为:

class Sysinfo extends CI_Model{ //your code }

将摆脱此错误消息。