Giriş yap
PDO ile Çoklu INSERT İşlemi

Elimizde bulunan 2 dizi var. Bunlardan biri a dizisi olsun diğeri b dizisi.

a dizimizin içinde 3 eleman var. (A1,A2,A3)
b dizimizin içinde 2 eleman var. (B1,B2)

Bu elemanlar artabilir azalabilir.

Bu dizideki elemanları kullanarak INSERT işlemi yapmak. INSERT yapacağımız tablo örneği olarak;

ID |  A  |  B 
-------------
1  | A1  | B1
2  | A2  | B1
3  | A3  | B1
4  | A1  | B2
5  | A2  | B2
6  | A3  | B2

Şeklinde işlem yapmamız lazım. Yani elimizde bulunan elemanlarla her kombinasyonda eşleştirme yapmamız gerekiyor. Bir diğer örnekle gösterecek olsak;

a dizimizin içinde 2 eleman var. (C4,C5)
b dizimizin içinde 1 eleman var. (H9)

ID |  C  |  H 
-------------
1  | C4  | H9
2  | C5  | H9

Şeklinde bir INSERT işlemi yapmak istiyorum. Umarım anlatabilmişimdir, markdown editörünü de kullandıkça sevmeye başladım, ilk sorularım sorunluydu şimdi çözdüm editörü daha. :)

u2b3ki
9 gün önce

Meraba

$datafields = array('dbname', 'dbname2', ... );

$data[] = array('dbname' => 'value', 'dbname2' => 'value' ....);
$data[] = array('dbname' => 'value', 'dbname2' => 'value' ....);

insert into table (fielda, fieldb, ... ) values (?,?...), (?,?...)....

algoritm bu buni bi suru yolu var en oson yolu bu

u2b3ki
9 gün önce
insert into table (dbname, dbname2, ... ) values (?,?...), (?,?...)....
u2b3ki
9 gün önce
//isterseniz boylada yapabilirsiniz
$stmt = $pdo->prepare('INSERT INTO tablename VALUES(:a, :b, :c)');
foreach($data as $item)
{
    $stmt->bindValue(':a', $item[0]);
    $stmt->bindValue(':b', $item[1]);
    $stmt->bindValue(':c', $item[2]);
    $stmt->execute();
}
redline
9 gün önce

Hocam inceledim fakat anlayamadım malesef. Bu arada dizi içindeki eleman sayıları değişebilir. Mesela a'da 5 tane de olabilir 6 tane de. Aynı şekilde b diziside değişebilir.

u2b3ki
9 gün önce
    $a_element = ['a','a1','a2','a3','a4','a5'];
    $b_element = ['b','b1','b2','b3','b4','b5'];
    $c_element = ['c','c1','c2','c3','c4','c5'];
    $all = count($a_element); //toplamda kac tane update olajak sayisi $a_element id olabilir

    for($i = 0; $i < $all; $i++){

     /* this is demo 

      $result = $a_element[$i];
      $result .= $b_element[$i];
      $result .= $c_element[$i];
      echo'<pre>';
      print_r($result);
      echo'</pre>';
*/
      $statement = $db->prepare("INSERT INTO table_name (a_element, b_element, c_element,) VALUES ($a_element['$i'], $b_element['$i']), $c_element['$i'])");

      $result = $statement->execute(
        array(
          ':a_element' => $a_element['$i'],
          ':b_element' => $b_element['$i'],
          ':c_element' => $c_element['$i']
        )
      );
    }
u2b3ki
9 gün önce

burda kendim test ettim istadiniz kadar ekley bilirsiniz

elvin
9 gün önce

Merhaba. Array lar de]i.kene e.itledikden sonra array_merge($arr1, $arr2) ile her iki arrayı bir değişkene aktarın sonra forreach ile döndürerek işlem yaptıra bilirsiniz. Dosyalarınıza paylaşırsanız link yoluyla editleyip size yollaya bilirim: Mail [email protected] tam olarak ne istediyinizide yazarsınız. (Email paylaşmak yasaksa lütfen yorum kaldırılsın)

elvin
9 gün önce

Foreach içində if koşulu ile istediyin veriyi istediyin gibi yazdıra bilirsin

redline
9 gün önce

Teşekkürler arkadaşlar sorunu çözdüm :)

Nasıl akıllıca soru sorulur?
Daha hızlı ve kaliteli cevaplar almak için önce nasıl soru sorulacağını bilmeniz gerekir. Eğer bilmiyorsanız bu yazı serisini okuyun.

Cevap yaz