Döngüsü için kullanma?
Fakat MySQL veri yüklemek için hızlı seçenek PHP üzerinden yüklemek için dosyası oluşturabilirsiniz, LOAD DATA INFILE komutunu kullanın ve sonra farklı bir süreç aracılığıyla MySQL onu beslemek (ya da orijinal bir son adım olarak için süreci).
Bir dosyayı kullanamıyorsanız, aşağıdaki sözdizimini kullanın:
insert into table(col1, col2) VALUES (val1,val2), (val3,val4), (val5, val6)
böylece çalıştırmak cümlelerin toplam tutarı azaltır.
EDIT: pasajı önüne alındığında, bu veritabanı işi icar ve sorguların miktarını azaltarak, MySQL INSERT ... ON DUPLICATE KEY UPDATE sözdizimi yararlanabilir görünüyor. Bu tablo, birincil anahtar veya benzersiz dizin vardır varsayar.
DB gibi bir şey yapabilirsiniz, her 100 satırları vurmak (PLEASE REVIEW IT AND FIX IT TO YOUR ENVIRONMENT)
$insertOrUpdateStatement1 = "INSERT INTO table (col1, col2) VALUES ";
$insertOrUpdateStatement2 = "ON DUPLICATE KEY UPDATE ";
$counter = 0;
$queries = array();
foreach($itemList as $key => $item){
$val1 = escape($item->col1); //escape is a function that will make
//the input safe from SQL injection.
//Depends on how are you accessing the DB
$val2 = escape($item->col2);
$queries[] = $insertOrUpdateStatement1.
"('$val1','$val2')".$insertOrUpdateStatement2.
"col1 = '$val1', col2 = '$val2'";
$counter++;
if ($counter % 100 == 0) {
executeQueries($queries);
$queries = array();
$counter = 0;
}
}
Ve executeQueries dizi kapmak ve tek bir çoklu sorgu göndermek istiyorsunuz:
function executeQueries($queries) {
$data = "";
foreach ($queries as $query) {
$data.=$query.";\n";
}
executeQuery($data);
}