PDO Hazırlanan Ekler tek sorguda birden fazla satır
Şu anda MySQL SQL bu tür tek bir sorguda ınsert değerleri birden çok satır için kullanıyorum:
INSERT INTO `tbl` (`key1`,`key2`) VALUES ('r1v1','r1v2'),('r2v1','r2v2'),...
PDO üzerine okumalar, kullanımı, tablolar, sorgular bana statik daha iyi bir güvence vermek gerekir.
Bu nedenle "bir sorgu kullanarak değerleri birden çok satır ekleme" hazırlanmış deyimleri kullanarak. üretmek için mümkün olup olmadığını bilmek istiyorum
Evet, biliyorum bunu nasıl uygulayabilir miyim?
CEVAP
Birden fazla PDO Hazırlanmış Deyimleri ile Değerleri Ekleyin
İçinde birden çok değer ekleme deyimi yürütme. Neden bu sayfaya göre daha hızlı düzenli ekler daha çünkü. http://dev.mysql.com/doc/refman/5.0/en/insert-speed.html
$datafields = array('fielda', 'fieldb', ... );
$data[] = array('fielda' => 'value', 'fieldb' => 'value' ....);
$data[] = array('fielda' => 'value', 'fieldb' => 'value' ....);
daha fazla veri değerleri veya muhtemelen verilerin dolduran bir döngü var.
Hazırlanan ekler ile ekleme alanları ve oluşturmak için alanların sayısını bilmek gerekir ? bağlamak için yer tutucular parametreleri.
insert into table (fielda, fieldb, ... ) values (?,?...), (?,?...)....
Bu ınsert deyimi gibi bakmak istiyorum nasıl temelde.
Şimdi, kodu:
function placeholders($text, $count=0, $separator=","){
$result = array();
if($count > 0){
for($x=0; $x<$count; $x ){
$result[] = $text;
}
}
return implode($separator, $result);
}
$pdo->beginTransaction(); // also helps speed up your inserts.
$insert_values = array();
foreach($data as $d){
$question_marks[] = '(' . placeholders('?', sizeof($d)) . ')';
$insert_values = array_merge($insert_values, array_values($d));
}
$sql = "INSERT INTO table (" . implode(",", $datafields ) . ") VALUES " . implode(',', $question_marks);
$stmt = $pdo->prepare ($sql);
try {
$stmt->execute($insert_values);
} catch (PDOException $e){
echo $e->getMessage();
}
$pdo->commit();
Benim test olmasına rağmen, tek bir değer ile birden fazla ekler ve düzenli hazırlanmış ekler kullanırken 1 sn fark vardı.
Daha hızlı olan: birden fazla tek Ekle...
Nasıl JavaScript kodu birden fazla sat...
Vim birleştirme birden fazla satır (ik...
Nasıl bir kayıt (select top 1) Her kay...
Nasıl Vim içinde birden fazla satır sa...