Codeigniter mysql过程多变量

Codeigniter mysql过程多变量,mysql,arrays,codeigniter,stored-procedures,Mysql,Arrays,Codeigniter,Stored Procedures,嗯。我们可以在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更好的东西(“调用某些程序(?,,?,?

嗯。我们可以在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更好的东西(“调用某些程序(?,,?,?…”;
提前感谢!

好吧……您可以在解析字符串之前使用
$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})");

嗯……您可以在解析字符串之前对它们执行
$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})");
只需使用:

只需使用:


@skater_nex:那么,问题出在哪里呢?您接受的解决方案不再是性能更高,而是更加详细(并且依赖
escape
函数将您从SQL注入中解救出来,而不是应该更安全的准备语句)…同意。我想要更优雅的方式。您的解决方案是完美的(就像我的一样)它是有效的。但从来没有少过……比如说:我想要替代的解决方案。@skater\u nex:那么,问题出在哪里呢?您接受的解决方案没有更高的性能,而是更加冗长(并且依赖于
escape
函数将您从SQL注入中解救出来,而不是准备好的语句,这应该更安全)…同意。我想要更优雅的方式。你的解决方案是完美的(和我的一样),而且很有效。但无论如何……让我们说一下:我想要替代解决方案。@Robin Castlin:我从视图中得到一个数组($email_to=$this->input->post('sendMail[]);),发送给控制器。哦,我如何才能将此传递给模型中的存储过程?@GaneshAher您好,您的问题似乎与此答复不太相关。我猜
$email\u to
是一个数组,您必须循环使用。您在这里没有给我太多的工作。@RobinCastlin请检查问题。@Robin Castlin:我从视图中获取数组($email_to=$this->input->post('sendMail[]);),发送给控制器。哦,我如何才能将此传递给模型中的存储过程?@GaneshAher您好,您的问题似乎与此答复不太相关。我猜
$email\u to
是一个数组,您必须循环使用。您在这里没有给我太多的工作。@RobinCastlin请检查问题。