1

Ok。次のように、Codeigniter で MySQL プロシージャを呼び出すことができます。

$buf = array('something', NULL); //array of vars
$this->db->query("CALL some_proc(?, ?)", $buf); //calling stored procedure

しかし、巨大な配列 (25 ~ 30 項目) がある場合、配列を使用して MySQL ルーチンをよりスムーズに呼び出す方法はありますか? $this->db->query("CALL some_proc(?, ?, ?, ? ..."); よりも優れたもの 事前に感謝します!

4

2 に答える 2

3

ええと...$this->db->escape()前に文字列を解析できます。

$arr_cols = array('value_1', 'value_2', 'value_3');
foreach(array_keys($arr_cols) as $h)
    $arr_cols[$h] = $this->db->escape($arr_cols[$h]);

$str_cols = implode(', ', $arr_cols);

$this->db->query("CALL some_proc({$str_cols})");
于 2012-05-11T10:38:33.933 に答える
2

使用するだけstr_repeat()です:

$this->db->query("CALL some_proc(?" . str_repeat(",?", count($buf)-1) . ")", $buf);
于 2012-05-11T10:40:21.823 に答える