• 13-01-2017, 21:47:34
    #1
    Çoğu kaynağa baktım tam sonuca ulaştım derken arraylar yüzünden problem oldu bu seferde aşağıdaki json kodundan 200 tane veri var bunları düzenli bir şekilde sql aktarmak istiyorum. gelen json; (get content ile json decode kullanılmış hali);

    Array
    (
        [BaslangiciBurada] => Array
            (
                [selam] => Array          // [selam,] naber şeklindeki arrayleride sql tablosunda arrayler diye sutun oluşturdum yani tabloya  array= selam, id=24 , a= a , b=b şeklinde kaydetmesini istiyorum 
                    (
                        [id] => 24
                        [a] => a
                        [b] => x
                        [c] => 
                    )
    
                [naber] => Array
                    (
                        [id] => 37
                        [a] => c
                        [b] => 
                        [c] => x
                    )

    SQL tablosuna almak istediğim sonuç

    Arrayler , id , a , b , c

    = selam , 24 , a , x, ,
    = naber , 37 , c , , x



    ////

    İkinci sorum bunları ayrı bir tablo oluşturarak daha önceden hazırladığım başka sql tablosu içinde kullanacağım id den çekeceğim where id='' diyerek

    .json dosya olarak bırakıp, sql değilde json içinden çekmek daha mı mantıklı olur?
    eğer öyle ise file get contents json decode alarak yapmayı biliyorum, yani örneğin

    $b['selam']['id']

    diyerek id sini alacam fakat id den arrayini nasıl bulacam sql gibi rahat yapılabiliyor mu
  • 14-01-2017, 06:47:26
    #2
    Yazım yanlışları olabilir siz düzeltebilirsiniz, temel mantık budur. Dizi içinde arama yapmak her ihtiyaç duyulduğunda kullanılacağı için daha çok kaynak tüketir,i mysql kadar kullanışlıda değildir.

    foreach($dizi[BaslangiciBurada] as $alt1_key => $alt1_val){
       foreach($alt1_val as $alt2){
          query("insert into (array, id, a, b, c) values('$alt1_key', '$alt2[id]', '$alt2[a]', '$alt2[b]', '$alt2[c]',)");
       }
    }
    Her dizi için yeni bir sorgu yerine toplu insert daha mantıklı olabilir.
    $query1 = "insert into tablo_adi (array, id, a, b, c) ";
    foreach($dizi[BaslangiciBurada] as $alt1_key => $alt1_val){
       foreach($alt1_val as $alt2){
          $query2[]= " values('$alt1_key', '$alt2[id]', '$alt2[a]', '$alt2[b]', '$alt2[c]') ";
       }
    }
    query($query1.implode(',', $query2));