模型codeigniter中的查询数组

Posted

技术标签:

【中文标题】模型codeigniter中的查询数组【英文标题】:Query array on model codeigninter 【发布时间】:2014-10-05 09:33:07 【问题描述】:

我是一名学习 CodeIgniter 的学生,我有一个关于数据库的学校作业,我创建了一个项目,并像这样在我的模型中运行查询。

class Send_model extends CI_Model        
   function hello() $table = $this->db->query("SELECT * FROM (`tbl1`) LEFT JOIN `tbl2` ON `tbl2`.`id` = `tbl1`.`child_id` LEFT JOIN `tbl3` ON `tbl3`.`id` = `tbl1`.`child_id` ");
    foreach($table->result() as  $row)
    $modbus[]= $row->modbus;
    $data []= $row->data;
    $alert[]= $row->alert;
    ;
        $param0 = '&'.$modbus[0].'='.$data[0].':'.$alert[0]; 
        $param1 = '&'.$modbus[1].'='.$data[1].':'.$alert[1];
        $param2 = '&'.$modbus[2].'='.$data[2].':'.$alert[2];
        $param3 = '&'.$modbus[3].'='.$data[3].':'.$alert[3];
        $param4 = '&'.$modbus[4].'='.$data[4].':'.$alert[4];
        $param5 = '&'.$modbus[5].'='.$data[5].':'.$alert[5];
        $param6 = '&'.$modbus[6].'='.$data[6].':'.$alert[6];
        $param7 = '&'.$modbus[7].'='.$data[7].':'.$alert[7];
        $param8 = '&'.$modbus[8].'='.$data[8].':'.$alert[8];
        $param9 = '&'.$modbus[9].'='.$data[9].':'.$alert[9];
        $param10 = '&'.$modbus[10].'='.$data[10].':'.$alert[10];
        $param11= '&'.$modbus[11].'='.$data[11].':'.$alert[11];
        $param12 = '&'.$modbus[12].'='.$data[12].':'.$alert[12];
        $param13 = '&'.$modbus[13].'='.$data[13].':'.$alert[13];
        $param14 = '&'.$modbus[14].'='.$data[14].':'.$alert[14];
        $param15 = '&'.$modbus[15].'='.$data[15].':'.$alert[15];
        $param16 = '&'.$modbus[16].'='.$data[16].':'.$alert[16];
        $param17 = '&'.$modbus[17].'='.$data[17].':'.$alert[17];
        $param18 = '&'.$modbus[18].'='.$data[18].':'.$alert[18];
    $sent = $param0.$param1.$param3.$param4.$param5.$param6.$param7.$param8.$param9.$param10.$param11.$param12.$param13.$param13.$param14.$param15.$param16.$param17;

    return $sent;

我的控制器就是这样

class Send extend CI_Controller
function data ()
 
$this->load->model('send_model');
$send = $this->model->send_model->hello();
echo $sent;


我有一个问题,如果 tbl1 添加数据然后我必须编写添加代码到我的脚本 谁能帮我简化这段代码?

【问题讨论】:

【参考方案1】:

这是因为您通过创建 19 个$param 变量进行硬编码以仅发送 19 行数据。在动态条件下,您可能有一个空记录集或数百条记录。将 foreach 循环的结构修改为:

$param = array();
foreach($table->result() as  $row)
$param[] = '&'.$row->modbus.'='.$row->data.':'.$row->alert;
 
return $param;

希望它能回答你的问题。

【讨论】:

感谢您的回答,我根据您的建议修改了我的脚本,但是当我在浏览器中调用我的控制器时出现错误结果“数组” 这是因为您使用echo 来显示数组。使用var_dump 检查数组是否返回值,然后您可以应用您想要的方式显示数组的逻辑。 PS:请点击旁边的勾号标记我的答案。谢谢。 终于成功了,向你学习,非常感谢你

以上是关于模型codeigniter中的查询数组的主要内容,如果未能解决你的问题,请参考以下文章

模型数组的 Codeigniter 错误

codeigniter echo 查询结果数组

将数组从控制器传递到 codeigniter 中的模型

将数组从模型组合并返回到控制器 - CodeIgniter

Codeigniter 未显示 MySQL 查询获取的数组的正确结果。

将数据库查询中的行放入 CodeIgniter 中的数组中