Intereting Posts

Попытка «вызвать» хранимые процедуры с помощью CodeIgniter

У меня этот рабочий код с CI:

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

он работает, но если я попытаюсь использовать:

 $this->db->call_function('nameOfProcedure', 'param1', '@param2'); 

я получаю ошибку:

Эта функция недоступна для используемой базы данных.

Что не так?

благодаря

Проверьте документы на call_function . Это для вызовов функций, которые не являются родными для драйвера DB CI, а не для вызовов, которые вы написали.

Вы можете проверить код call_function в /system/database/DB_driver.php Ln 998 на CI 2.1.0, чтобы четко видеть, что он делает.

На всякий случай это помогает кому угодно. Я использую эту библиотеку для работы с хранимыми процедурами в CI, она также поддерживает несколько наборов результатов.

вот код

Я называю это 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; } } ?> 

назовите его так, как это описано на контроллере

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

Кроме того, обязательно установите mysqli драйвер в application/config/database.php

 $db['default']['dbdriver'] = 'mysqli';