Commands out of syncエラーが出る
Code Igniterでストアドプロシージャを使用すると、Commands out of sync とエラーが出る為、調査しました。
結果として、CIのdbdriverにmysqlを設定していること、CIのメインシステムのDBをいじるところに関数を追加することで対処出来ました。
以下が、解決方法です。
application/config内のdatabase.phpで、mysqlをmysqliに変更。
$db['default']['dbdriver'] = 'mysqli';
system/database/drivers/mysqliのmysqli_result.phpに、以下の関数を追加。
/**
* Next the result
* @return  null
*/
function next_result()
{
  if (is_object($this->conn_id))
  {
    mysqli_next_result($this->conn_id);
  }
}
あとは、model側で上記の関数を挟みながら実行するだけです。
$sql = "CALL stad()"; $query = $this->db->query($sql); $res = $query->result_array(); $query->next_result(); $query->free_result(); return $res;
結構手こずりましたが、これで一応動くようになりました。










あと、これは別件ですが、ストアドでデータを貯めてたりすると、Thread stack overrunで怒られたりします。
その場合は、my.cnf内のthread_stackの容量を増やして上げましょう。