CodeIgniter'daki MYSQL birden insert [çoğaltmak]

3 Cevap php

Possible Duplicate:
insert multiple rows via a php array into mysql

Ben böyle bir şey yaparak mySQL çoklu ekleme yapma olasılığı hakkında bilmek:

    foreach ($array as $manuf) {    
        $sql[] = '("'.mysql_real_escape_string($manuf['name']).'", "'.$manuf['lang'].'", "'.$mId.'")';
    }

    $this->db->query('INSERT INTO manufacturers (name, lang ,mid) VALUES ' . implode(',', $sql) );

Ben bile daha az kod ile bunu yapmak için geçerli DB (aktif-kayıt) kütüphane uzanan belki bu yapmak ve daha iyi bir yolu var acaba?

Teşekkürler

3 Cevap

Tek bir açıklamada birden fazla satır eklemek isteyen için nedeni hakkında net olması gerekir. Bu performans için mi?

Altyapıları programlama verimlilik ve kolaylık sağlamak için vardır, ama ille performans. Ben @ Udi Mosayev tarafından verilen cevap ile katılıyorum - en basit kullanımı çerçeve API kullanın.

Eğer satır az sayıda ekliyorsanız, deyim ve deyim başına birden fazla satır başına bir satır ekleme arasındaki fark önemsizdir.

Satır çok sayıda var ve gerçekten yüksek performans ile eklemek için ihtiyacınız varsa, hiçbir şey LOAD DATA INFILE . Your attempts to optimize usage of INSERT ediliyor kuruş-bilge ve pound harcayan yener. Hatta bir tmpfile içine PHP dizi damping ve sonra yüklemeden LOAD DATA INSERT kullanarak daha hızlıdır.

Tabii. Sadece kullanmak $this->db->insert('dbTableName', $arrayOfData). Veri dizisi alan> değeri, ve alan DB içinde size tablodaki sütun adıdır.

Eğer bu konuda daha fazla okuyabilirsiniz here

Eğer satır gerçekten büyük numarası eklemek için gidiyoruz eğer tek bir sorguda bunu yapmalıyız. Ben CI doğru yaptığını düşünmüyorum. PS: mysql yüksek sorgu boyutu hakkında unutmayın.