Trying to 'call' stored procedures with CodeIgniter

后端 未结 2 1646
滥情空心
滥情空心 2020-12-18 13:49

i\'ve this working code with CI:

$this->db->query(\"call nameOfProcedure(\'param1\', @param2)\");
$query = $this->db->query(\'SELECT @param2 as r         


        
相关标签:
2条回答
  • 2020-12-18 14:07

    Check out the docs on call_function. It's for calling functions that aren't native to CI's DB driver, not for calling procedures you've written.

    You can check the call_function code in /system/database/DB_driver.php Ln 998 on CI 2.1.0 to see clearly what it's doing.

    0 讨论(0)
  • 2020-12-18 14:23

    Just in case it helps anyone. I use this library to work with stored procedures in CI, it supports multiple result sets too.

    here is the code

    I call it Mydb.php

    <?php #if ( ! defined('BASEPATH')) exit('No direct script access allowed');
    
    class Mydb
    {
       private $CI, $Data, $mysqli, $ResultSet;
    
       /**
       * The constructor
       */
    
       function __construct()
       {
         $this->CI =& get_instance();
         $this->Data = '';
         $this->ResultSet = array();
         $this->mysqli = $this->CI->db->conn_id;
       }
    
        public function GetMultiResults($SqlCommand)
        {
        /* execute multi query */
        if (mysqli_multi_query($this->mysqli, $SqlCommand)) {
            $i=0;
            do
            {
    
                 if ($result = $this->mysqli->store_result()) 
                 {
                    while ($row = $result->fetch_assoc())
                    {
                        $this->Data[$i][] = $row;
                    }
                    mysqli_free_result($result);
                 }
                $i++; 
            }
            while ($this->mysqli->next_result());
        }
        return $this->Data;
    
       }   
    }
    ?>  
    

    call it like this from controller

    $this->load->library('mydb');
    $arr  = $this->mydb->GetMultiResults("CALL GetReferrals()");
    

    Also, make sure to set mysqli the driver in application/config/database.php

    $db['default']['dbdriver'] = 'mysqli';
    
    0 讨论(0)
提交回复
热议问题