我正在尝试输入100个以';'分隔的电子邮件地址并将它们存储在MySql表中。到目前为止我尝试过的是:
$recipient_raw = $this->input->post('recipient'); //get the 100 emails in $recipient_raw
$recipient_array=explode(';', $recipient_raw); //explode them into an array
$title = $this->input->post('title');
$body = $this->input->post('body');
foreach($recipient_array->result() as $row):
$recipient=array(
'email'=>$row->email //looping through each email; seems I should not use $row->email since there's no title for them
);
$this->db->insert('eamil_send',$this->db->escape($recipient));
endforeach;
我在CodeIgniter PHP上运行它。错误消息是在线foreach($ recipient_array-> result()为$ row):,其中它表示:在非对象上调用成员函数result()
任何建议表示赞赏!谢谢!
答案 0 :(得分:1)
result(),是用于转换数据库结果对象的活动记录函数。您正在创建标准数组。
$batch = array();
foreach($recipient as $row){
$batch[] = array(
'email' => $row
);
}
$this->db->insert_batch('email_send', $batch);
那应该做你想要完成的事情。
答案 1 :(得分:1)
错误信息非常自我解释..
在代码的第二行中,您将$ recipient_array声明为Array(),而不是对象。所以,没有“结果”方法可用。 你的循环应该是
foreach($ recipient_array as $ row)
另外,您可能不应该在循环中执行db操作(特别是100次操作!)。相反,您应该将所有查询保存在一个大查询字符串中并在最后执行。
答案 2 :(得分:0)
如果您希望100个电子邮件地址与','分开,则应使用implode(glue,pieces)而不是explode()函数。就像你要插入的电子邮件地址一样。
$recipient_raw = array();
$recipient_raw[] = $this->input->post('recipient');
foreach ($recipient_raw as $value) {
$tem_arr = implode(',', $value);
}
$this->db->insert('eamil_send',$this->db->escape($tem_arr));