从codeigniter调用存储过程

时间:2015-08-18 08:24:02

标签: codeigniter stored-procedures

我正在使用具有mysqli作为db驱动程序的codeigniter,我试图从我的模型中调用一个简单的存储过程但是出错了。我做错了什么

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'pc()' at line 1

pc()

Filename: C:\hosted\saner.gy\ipa\system\database\DB_driver.php

Line Number: 330

当我运行查询调用存储过程时它运行良好但是从codeigniter它会引发上述错误

存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `pc`()
    LANGUAGE SQL
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
    SELECT * FROM tbl_flo
  WHERE name = 'sam';
END

控制器

public function sp()
{
$this->User_model->pc();
}

模型

public function pc()
        {
            $query = $this->db->query("pc()");

            return $query->result();
        }

3 个答案:

答案 0 :(得分:5)

使用CALL procedure_name(optional_params)查询调用存储过程。

您需要编辑模型中使用的查询,如下所示:

public function pc()
    {
        $query = $this->db->query("CALL pc()");
        return $query->result();
    }

答案 1 :(得分:2)

您正在使用以下方式呼叫程序。

$this->db->call_function('pc');

或者您也可以使用此

$this->db->query("call pc()");

答案 2 :(得分:2)

这是老兄,这个代码块在模型中为我工作

function get_sunmeter_for_initiator($data){
        try {
            $this->db->reconnect();
            $sql = "CALL `get_sunmeter_for_initiator`(?, ?, ?)";
            $result = $this->db->query($sql,$data); // $data included 3 param and binding & query to db
            $this->db->close();


        } catch (Exception $e) {
            echo $e->getMessage();
        }
        return $result;

    }