我想要一次点击数据库,然后返回一个MySQL资源和一个数组。我的控制器中有以下代码来执行此操作:
$result = $this->data->my_method();
$data['result_resource'] = $result;
$data['result_array'] = $result->result_array();
在我看来,我打电话给以下人员:
$this->table->generate($result_resource);
当$data['result_array']
行被注释掉时,该表按预期工作(即列标题显示),但当$data['result_array']
行未注释掉时, result_resource
和result_array
转向数组。这里发生了什么,以及如何避免它?
$ data数组以典型的CI方式传递给视图:
$this->load->view('view.php', $data);
运行该方法两次确实解决了问题,但我不想这样做。
答案 0 :(得分:0)
关于result_array()被“消耗”的东西是无意义的 - 它只是一个根本没有运行的对象。你可以一遍又一遍地使用它
我把你的代码放到一个控制器中 - 包括table-> generate() - 一切都运行得很好。
$ result是包含连接资源等的基础对象。真的不是你想要使用的。它的工作原理是因为表库已设置好,如果你传递了它,它会为你寻找result_array(),但它实际上并不是标准的做法。
我认为你的代码中有其他东西你已经看过去导致了麻烦。尝试删除$ result代码,然后运行:
$result = $this->data->my_method();
$data['result_array'] = $result->result_array();
var_dump($data['result_array']);
echo $this->table->generate($data['result_array']);
并检查一切看起来是否正常。我怀疑你会在某个时候做一个facepalm: - )