在一个查询中为数组中的每个元素插入一行

时间:2012-11-05 21:23:36

标签: php codeigniter activerecord

我有一个包含多个元素的数组。数组的大小并不总是相同。

目前,我能想到的唯一方法是使用foreach循环,并为数组中的每个元素查询数据库一次。

我正在寻找一种方法为数组中的一个元素插入一行,但所有在一个查询中。我想做的是使用codeigniter的活动记录类,这样我就不必编写代码来检查恶意数据等。

2 个答案:

答案 0 :(得分:3)

如果您只想要一个查询,请使用insert_batch

$data = array();

// Sample data
$items = array('Value 1', 'Value 2', 'Value 3');

foreach ($items as $value)
{
    $data[] = array(
        'your_column_name'  =>  $value,

        // Populate more columns here if you need to
        'date_created'      =>  time()
    );
}

$this->db->insert_batch('mytable', $data); 

所有值都会自动转义。

文档:http://codeigniter.com/user_guide/database/active_record.html#insert

答案 1 :(得分:0)

您可以拥有$sql .= 'SQL HERE; ',因此您在一个变量中有多个查询,然后只有一个函数调用来运行查询。