如何在Code Igniter中使用batch_insert将数组插入1列PHP?

时间:2016-03-18 16:11:26

标签: php arrays codeigniter bulkinsert

我有这个功能,

public function storeVals($vals)
{
    $vals = explode(",", $vals);

    foreach ($vals as $val)
    {
        $val = array('input'=>$val);

        $this->db->insert('input', $val);
    }
}

该函数基本上接收一个字符串,例如:This,Is,An,Example

然后它将字符串转换为带有",#34;的数组。作为分隔符。

然后循环遍历数组并将数据插入数据库。

我认为Code Igniter已经具备了执行此功能的功能。

File: system/database/drivers/mysql/mysql_driver.php

function _insert_batch($table, $keys, $values)
{
    return "INSERT INTO ".$table." (".implode(', ', $keys).") VALUES    ".implode(', ', $values);
}

关于如何使用insert_batch()而不是循环和插入的任何想法都将受到高度赞赏。

谢谢。

1 个答案:

答案 0 :(得分:1)

在CodeIgniter中,您可以将batch_insert用作:

public function storeVals($vals)
{
    $vals = explode(",", $vals);

    $yourArr = array();
    foreach ($vals as $val)
    {
        $yourArr[] = array('input'=>$val); // store values in array  
    }
    $this->db->insert('tableName', $yourArr);
}

您还可以关注CI示例:

$data = array(
   array(
      'title' => 'My title' ,
      'name' => 'My Name' ,
      'date' => 'My date'
   ),
   array(
      'title' => 'Another title' ,
      'name' => 'Another Name' ,
      'date' => 'Another date'
   )
);

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

// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'), ('Another title', 'Another name', 'Another date')

Example Reference

CI 3 User Guide (Batch Insert)