我收到了错误:
“致命错误:不能在第183行使用stdClass类型的对象作为数组
从这段代码:
$getvidids = $ci->db->query(
"SELECT * FROM videogroupids " .
"WHERE videogroupid='$videogroup' AND used='0' LIMIT 10");
foreach ($getvidids->result() as $row){
$vidid = $row['videoid']; //This is line 183
}
有人知道上面的代码有什么问题吗?或者这个错误意味着什么?
答案 0 :(得分:63)
CodeIgniter将结果行作为对象返回,而不是数组。来自user guide:
结果()
此函数在失败时将查询结果作为对象或空数组的数组返回。
您必须使用以下表示法访问字段:
foreach ($getvidids->result() as $row) {
$vidid = $row->videoid;
}
答案 1 :(得分:15)
如果你真的想要一个数组,你可以使用:
$getvidids->result_array()
将返回与关联数组相同的信息。
答案 2 :(得分:0)
控制器(例如:User.php)
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Users extends CI_controller
{
// Table
protected $table = 'users';
function index()
{
$data['users'] = $this->model->ra_object($this->table);
$this->load->view('users_list', $data);
}
}
查看(例如:users_list.php)
<table>
<thead>
<tr>
<th>Name</th>
<th>Surname</th>
</tr>
</thead>
<tbody>
<?php foreach($users as $user) : ?>
<tr>
<td><?php echo $user->name; ?></td>
<td><?php echo $user->surname; ?></th>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<!-- // User table -->
答案 3 :(得分:-3)
抱歉。虽然有点晚了但希望它也能帮助别人。 始终使用stdClass object.e.g
$getvidids = $ci->db->query("SELECT * FROM videogroupids WHERE videogroupid='$videogroup' AND used='0' LIMIT 10");
foreach($getvidids->result() as $key=>$myids)
{
$vidid[$key] = $myids->videoid; // better methodology to retrieve and store multiple records in arrays in loop
}