批量插入

时间:2016-02-22 09:34:42

标签: php mysql yii

我有以下代码正常, 但我需要一种批量处理它的方法 将它们全部插入。

for($i=0; $i<sizeof($my_array); $i++)
        {

            $sql = "INSERT INTO exclude_resource (id,resource_id,config_id)
                    VALUES(DEFAULT, '$my_array[$i]' ,'$insert_id')";

            $command = $connection->createCommand($sql);
            $result = $command->execute();
        }

1 个答案:

答案 0 :(得分:0)

您的查询应该类似于(请参阅mysql docs):

INSERT INTO table (field1, field2, field3)
VALUES
    (value1a, value2a, value3a),
    (value1b, value2b, value3b),
    (value1c, value2b, value3c),
    ...

所以将值放在数组中,用逗号连接它们,然后执行生成的查询。以PHP结合:

$values = array();
for($i=0; $i<sizeof($my_array); $i++) {
    $values[] = "(DEFAULT, '$my_array[$i]' ,'$insert_id')";
}

$sql = 
    "INSERT INTO exclude_resource (id,resource_id,config_id) VALUES '.
    join(',', $values);
$command = $connection->createCommand($sql);
$result = $command->execute();

$insert_id需要有一个值,但与您的代码段相同。

如果要插入的行数超过5k或10k,则应在其间运行INSERT并重置数组。