CodeIgniter问题从DB检索和显示数据

时间:2011-01-17 15:24:35

标签: codeigniter

这是我的功能。这很简单。

function load_data() {

        $query = $this->db->query('SELECT * FROM configurations WHERE username="' . $this->session->userdata('username') . '"');
        return $query;
   }

我的控制器有这行代码:

$data['query'] = $this->configurations->load_data();

在我看来,我试过了:

foreach($query->result_array() as $row) {

echo $row->first;

}

但是我收到一个错误,我正在尝试获取非对象的属性。查询是否作为对象从模型返回?

7 个答案:

答案 0 :(得分:5)

您应该使用$ query-> result_array,row_array,result或row,否则返回对象intead会得到结果。查看CI手册。

答案 1 :(得分:2)

您将结果返回array并使用$row作为对象! 试试:

foreach($query->result() as $row) {

Refer

答案 2 :(得分:1)

尝试将$this->load->model('login/configurations', '', TRUE);更改为$this->load->model('login/configurations', 'configurations', TRUE);,看看它是否有效。如果是,则与您扩展模型类的方式有关。也就是说,它与您在configurations.php中给出的名称有关。

希望这有帮助。

答案 3 :(得分:1)

您的未定义变量错误告诉我您的查询可能无法正常运行。要诊断...使分析器能够检查您的查询。

From the documentation

  

$这 - >输出 - > enable_profiler();

     

允许您启用/禁用   Profiler,将显示基准   和你的底部的其他数据   用于调试和优化的页面   目的。

     

启用分析器放置   跟随任何地方的功能   你的控制器功能:   $这 - >输出 - > enable_profiler(TRUE);

     

启用后会生成报告   生成并插入底部   你的网页。

     

您的查询将在结尾显示   页面

仔细检查您的查询语法,确保其运行正常,

答案 4 :(得分:0)

你的代码当前状态是返回一个对象和数组的对象:

print_r($query)

CI_DB_mysql_result Object
(
    [conn_id] => Resource id #29
    [result_id] => Resource id #39
    [result_array] => Array
        (
        )

    [result_object] => Array
        (
        )

    [current_row] => 0
    [num_rows] => 3
    [row_data] => 
)

您需要访问各个属性才能获得实际数据。

$result=$query->result();
print_r($result);

应该这样做

答案 5 :(得分:0)

之前有过这个问题 - 基本问题是如果Query没有返回结果集,那么$ query-> result_array()== NULL

NULL不是列表,不能在foreach中处理。 我发现检查这个条件可以解决这个问题。

答案 6 :(得分:0)

根据您的问题,您将结果作为纯数组(result_array),但将数据打印为对象( $ row-> first )。

result()或row()在对象中返回,但result_array在数组中返回。

更改您的视图部分,

  foreach($query->result_array() as $row) {

     echo $row['first'];

   }

或者如果你想使用一个对象,

foreach($query->result() as $row) {

     echo $row->first;

   }

Generating Query Results in Codeigniter