我只想帮助弄清楚如何插入多个选择框中的数据,将其放入变量然后放入数据库。
我的数据库表的结构如下:表:prd_attr
ID | Product_ID | name | value
-------------------------------
1 | 3 | size | large
2 | 3 | size | medium
所以说我有一个名为sizes[]
的多选框,管理员为产品选择2种尺寸进入数据库。我可以在控制器中获取这些值并将它们放入变量中:
$sizes = $_GET['sizes'];
并将该变量传递给模型。一旦它在那里,我可以将数据作为MySQL查询插入,如下所示:
foreach ($sizes as $s)
{
$query = mysql_query("insert into prd_attr ('name', 'value') VALUES ('size','$s')");
}
但我已经知道mysql_ *已被弃用,而且由于我使用的是提供Active Records的框架,我想利用它。我知道Active Record的基础知识,但由于这是一个可以包含任意数量值的变量的foreach循环,我不知道如何在Active Records中包含foreach语句。
有人可以解释一下吗?谢谢你的帮助。
答案 0 :(得分:2)
您还可以在codeigniter中使用批量插入:
试试这个:
function insert_sizes()
{
$sizes = $this->input->get('sizes');
foreach ($sizes as $s)
{
$data[] = array(
'name' => 'size',
'value' => $s
);
}
$this->db->insert_batch('prd_attr',$data);
}
更多详情:
http://ellislab.com/codeigniter/user-guide/database/active_record.html
答案 1 :(得分:1)
您可以在Codeigniter模型中使用它。这是一个方法
function insert_sizes()
{
$sizes = $this->input->get('sizes');
$data['name'] = 'size';
foreach ($sizes as $s)
{
$data['value'] = $s;
$this->db->insert('prd_attr',$data);
}
}