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
201 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
201 gün önce
insert into table (dbname, dbname2, ... ) values (?,?...), (?,?...)....
u2b3ki
201 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
201 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
201 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
201 gün önce

burda kendim test ettim istadiniz kadar ekley bilirsiniz

elvin
201 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
201 gün önce

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

redline
200 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

Günlük Film Tavsiyesi