В дополнение к уже полученным полезным ответам, если у вас есть большая таблица, которую нужно вставить, она может не вписаться в один оператор SQL. Однако создание отдельной транзакции для каждой строки также является медленным. В этом случае мы можем указать MySQL обрабатывать несколько операторов в одной транзакции, что значительно ускорит вставку для больших таблиц (> 1000 строк).
Пример:
<?php
function dologin() {
$db_username = 'root';
$db_password = 'root';
$db_hostname = 'localhost';
$db_database = 'logex_test';
mysql_connect($db_hostname, $db_username, $db_password);
mysql_select_db($db_database);
}
function doquery($query) {
if (!mysql_query($query)) {
echo $query.'<br><br>';
die(mysql_error());
}
}
function docreate() {
doquery("drop table if exists mytable");
doquery("create table mytable(column1 integer, column2 integer, column3 integer)");
}
function main() {
$temp3 = array(
array('1','2','3',),
array('4','5','6',),
array('7','8','9',),
);
dologin();
docreate();
doquery("start transaction");
foreach($temp3 as $row)
doquery("insert into mytable values('" . implode("','", $row) . "')");
doquery("commit") or die(mysql_error());
}
main();
?>