当前位置: 首页 > 知识库问答 >
问题:

在PHP CodeIgniter中将数组作为参数传递给模型

柳培
2023-03-14

在我的代码点火器应用程序中,我试图将as数组作为参数传递给存储过程。当我打印该数组时,它会给出所选值的正确结果。但它在我的模型函数中给了我一个错误。

这是我的控制器:

public function index()
{
        $propertyType=$this->input->post('property_type');
        $area=$this->input->post('area_id');
        $clustersID['cluster']=$this->input->post('cluster_id');
        $stageId=$this->input->post('property_status');
        print_r($clustersID);
        $data['properties'] = $this->p->getPropertyByAreaCluster($propertyType, $area, $clustersID, $stageId);

            // echo "<pre>";
            // print_r($data['properties']);
            // echo "</pre>";
            // exit();
            //$data['props'] = $this->p->PropView($propId);
            $this->load->view('template/header', $data);
            $this->load->view('Property/property_view', $data);
            $this->load->view('template/footer');
    }

这是我的模型:

public function getPropertyByAreaCluster($propertyType, $area, $clustersID, $stageId)
    {
        $query = $this->db->query("call fetch_propertyType_Area_Cluster_Stage($propertyType,$area,$clustersID,$stageId)");
        if ($query) {
            $data = $query->result();
            $query->next_result(); 
            $query->free_result();
            return $data;
        }else{
            return false;
        }
    }

错误:

遇到PHP错误严重程度:注意

消息:数组到字符串转换

文件名:models/Property_m.php

行号: 26

回溯:

文件:/opt/lampp/htdocs/livemg/application/models/Property\u m.php行:26函数:\u错误\u处理程序

文件:/opt/lampp/htdocs/livemg/application/controllers/Property。php行:61函数:GetPropertyByRealCluster

文件:/opt/lampp/htdocs/livemg/index。php行:315函数:需要一次

发生数据库错误,错误号:1054

字段列表中的未知列'Array'

调用获取属性类型区域集群阶段(0,0,数组,0)

文件名:models/Property_m.php

行号: 26

共有2个答案

微生旻
2023-03-14

您可以尝试以下代码:

控制器

public function fetchdata(){
$condition_array = array('category.id' => '1');
                $data = '*';
                $result_category_list = $this->common->select_data_by_condition('category', $condition_array, $data, $sortby = 'category_name', $orderby = 'ASC', $limit = '', $offset = '', $join_str = array());
}

模型

function select_data_by_condition($tablename, $condition_array = array(), $data = '*', $sortby = '', $orderby = '', $limit = '', $offset = '', $join_str = array()) {

        $this->db->select($data);
        $this->db->from($tablename);

        //if join_str array is not empty then implement the join query
        if (!empty($join_str)) {
            foreach ($join_str as $join) {
                if (!isset($join['join_type'])) {
                    $this->db->join($join['table'], $join['join_table_id'] . '=' . $join['from_table_id']);
                } else {
                    $this->db->join($join['table'], $join['join_table_id'] . '=' . $join['from_table_id'], $join['join_type']);
                }
            }
        }

        //condition array pass to where condition
        $this->db->where($condition_array);


        //Setting Limit for Paging
        if ($limit != '' && $offset == 0) {
            $this->db->limit($limit);
        } else if ($limit != '' && $offset != 0) {
            $this->db->limit($limit, $offset);
        }

        //order by query
        if ($sortby != '' && $orderby != '') {
            $this->db->order_by($sortby, $orderby);
        }

        $query = $this->db->get();

        //if limit is empty then returns total count
        if ($limit == '') {
            $query->num_rows();
        }
        //if limit is not empty then return result array
        log_message('debug', 'fetching data result:' . $this->db->last_query());
        return $query->result_array();
    }
万铭
2023-03-14

我得到了一个答案,只需将该数组转换为字符串并传递它。

    public function index()
    {
        $propertyType=$this->input->post('property_type');
        $area=$this->input->post('area_id');
        $clustersID['cluster']=$this->input->post('cluster_id');
        $clusterString = implode(',', $clustersID['cluster']);

        echo "<pre>";
        // var_dump($clustersID['cluster']);
        echo $clusterString;
        echo "</pre>";
        $stageId=$this->input->post('property_status');
        print_r($clustersID);
        $data['properties'] = $this->p->getPropertyByAreaCluster($propertyType, $area, $clustersID, $stageId);

        //$data['props'] = $this->p->PropView($propId);
        $this->load->view('template/header', $data);
        $this->load->view('Property/property_view', $data);
        $this->load->view('template/footer');
   }
 类似资料:
  • 问题内容: 我已经熟悉Android框架和Java,并希望创建一个通用的“ NetworkHelper”类,该类可以处理大多数联网代码,使我能够从中调用网页。 我遵循了来自developer.android.com的这篇文章来创建我的网络类:http : //developer.android.com/training/basics/network- ops/connecting.html 码:

  • 问题内容: 我需要在Web服务调用中将一些值从移动设备传递到服务器,因此我打算将JSON格式的所有值传递如下 以下是我的服务电话 我正在尝试通过这种方式致电上述服务 但是输出是这样的 谁能告诉我为什么我没有获得所有的价值观? 问题答案: 我建议将JSON数据作为请求传递给主体。但是,如果您仍然希望将其作为URL中的参数传递,则必须像下面这样对URL进行编码,例如: 对于前json是:-> 有关UR

  • 问题内容: 我可以将数组作为url参数传递的最佳方法是什么?我在想这是否可能: 还是这样: 香港专业教育学院阅读示例,但我发现它很混乱: 问题答案: 有一个非常简单的解决方案:。它把您的查询参数作为一个关联数组: 将返回 为您处理所有必需的转义(=> 和=> ),因此此字符串等于。

  • 问题内容: 我想使用数组作为参数调用一个函数: 有路过的内容的一种更好的方式进入? 问题答案: const args = [‘p0’, ‘p1’, ‘p2’]; call_me.apply(this, args); 请参阅MDN文档。 如果环境支持ECMAScript6,则可以改用传播参数:

  • 问题内容: 我想将字符串数组作为参数传递给函数。请看下面的代码 代替: 但是如果我这样做,我会收到一条错误消息,指出将其转换为。我想知道是否可以传递这样的值,或者正确的方法是什么? 问题答案: 怎么样:

  • 问题内容: 我似乎记得在PHP中,有一种方法可以将数组作为函数的参数列表传递,以标准方式取消对数组的引用。但是现在我迷失了如何做。我记得通过引用传递的方式,如何“遍历”传入的参数……但没有如何将数组从列表中除名。 它可能和一样简单,但是我敢肯定不是。但是,可悲的是,到目前为止,php.net手册还没有透露任何内容。并不是说我在过去一年左右的时间里不得不使用此特定功能。 问题答案: call_use