如何在控制器codeigniter中调用多个存储过程?

时间:2016-02-20 02:46:18

标签: php mysql codeigniter stored-procedures

当我想在控制器中调用多个存储过程时,我遇到了问题。只有一个存储过程执行。

此查询存储过程在模型中:

function getKategori(){
    $query = $this->db->query("call KategoriSelectPro('id_kategori','kategori')");
    return $query->result();
}

function getEditSubKategori($id_subkategori){
    $query = $this->db->query("call SubKategoriEditSelectPro(?,'id_kategori','kategori','sub_kategori')", $id_subkategori);
    return $query->row_array();
}

和控制器中的代码:

function subkategoriedit($id_subkategori = ''){
        $data['kategori'] = $this->madmin->getKategori();
        $data['editsubkategori'] = $this->madmin->getEditSubKategori($id_subkategori);
}

问题是只能在控制器中调用模型的一个功能。例如:

$data['kategori'] = $this->madmin->getKategori();(成功)

$data['editsubkategori'] = $this->madmin->getEditSubKategori($id_subkategori);(不运行)

错误消息是:

  

命令不同步;你现在不能运行这个命令

所以如果逆转。

帮助我,如何在CodeIgniter中调用多个存储过程?

2 个答案:

答案 0 :(得分:1)

一会儿我遇到了同样的问题,在stackoverflow上搜索了它,找到了答案,却忘了给答案打分..

在文件中添加以下功能 系统>数据库>驱动程序> mysqli> mysqli_driver.php

function next_result()
    {
        if (is_object($this->conn_id))
        {
            return mysqli_next_result($this->conn_id);
        }
    }

,然后在您执行的每个调用查询之后添加以下命令。

$this->db->next_result(); 

对我来说就像是一种魅力..

答案 1 :(得分:0)

模型中的

更改返回$ query-> row_array();返回$ query-> result_array();

function getKategori(){
    $query = $this->db->query("call KategoriSelectPro('id_kategori','kategori')");
    return $query->result();
}

function getEditSubKategori($id_subkategori){
    $query = $this->db->query("call SubKategoriEditSelectPro(?,'id_kategori','kategori','sub_kategori')", $id_subkategori);
    return $query->result_array();
}