Codeigniter mysql过程多变量
嗯。我们可以在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更好的东西(“调用某些程序(?,,?,?
$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请检查问题。