Trying to 'call' stored procedures with CodeIgniter
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 driverin application/config/database.php
$db['default']['dbdriver'] = 'mysqli';
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.