这是我的功能。这很简单。
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;
}
但是我收到一个错误,我正在尝试获取非对象的属性。查询是否作为对象从模型返回?
答案 0 :(得分:5)
您应该使用$ query-> result_array,row_array,result或row,否则返回对象intead会得到结果。查看CI手册。
答案 1 :(得分:2)
答案 2 :(得分:1)
尝试将$this->load->model('login/configurations', '', TRUE);
更改为$this->load->model('login/configurations', 'configurations', TRUE);
,看看它是否有效。如果是,则与您扩展模型类的方式有关。也就是说,它与您在configurations.php中给出的名称有关。
希望这有帮助。
答案 3 :(得分:1)
您的未定义变量错误告诉我您的查询可能无法正常运行。要诊断...使分析器能够检查您的查询。
$这 - >输出 - > 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;
}