在MySQL中组合一个包含多行的INSERT语句比在每行中使用一个INSERT语句快得多。
也就是说,它听起来像你可能会遇到字符串处理问题在PHP,这是一个真正的算法问题,而不是一个语言。基本上,当使用大字符串时,您希望最小化不必要的复制。首先,这意味着你想避免串接。构建一个大字符串的最快,最高效的内存高效方法是利用implode()函数和数组赋值,例如在一个插入几百行。
$sql = array();
foreach( $data as $row ) {
$sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')';
}
mysql_query('INSERT INTO table (text, category) VALUES '.implode(',', $sql));
这种方法的优点是,您不要复制和重新复制到目前为止,每个连接组合的SQL语句;相反,PHP在implode()语句中做这一次。这是一个大胜利。
如果你有很多列放在一起,并且一个或多个列非常长,你也可以构建一个内循环来做同样的事情,并使用implode()将values子句分配给外部数组。