v2.5.2
Giriş yap

JSON'dan Veritabanına Kayıt

mcfearcombat
619 defa görüntülendi

Merhaba,

cURL ile çektiğim bir json verisi mevcut bunu json_decode komutu ile çözümleyip okuyabiliyorum. Bu dosyanın içerisinde birçok veri mevcut ve ben bazılarını veritabanına kaydetmek istiyorum. Burada json'ı hiç decode etmeden mi okuma yöntemi uygulanır, yoksa decode ettikten sonra nasıl bir proses izlemem lazım fikir verebilirmisiniz ?

Cevap yaz
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Cevaplar (4)
ebykdrms
1073 gün önce

print_r() ile echo farklı şekilde çalışıyorlar. echo komutu karşısındaki ifadenin bir string olduğunu varsayar. Siz echo $cikti_json; komutunu verdiğinizde echo'ya bir string değil bir array veriyorsunuz.
print_r() fonksiyonu içeriğindeki yapıya göre kendince bir formatta çıktı üretir.
Aslında echo'nun amacı gerçekten ekrana bi'şeyler yazdırmakken print_r()'nin amacı programcıya bir değerin değerini göstermektir. İkisinin hedef kitlesi farklı.
Kısacası, bir PHP array'ını echo ile ekrana yazdıramazsınız. Size array'ın içeriğini yazmak yerine sadece "Array" yazar.
Siz eğer $cikti_json değişkeninizdeki değerleri yazdırmak istiyorsanız onlara ayrı ayrı ulaşıp echo komutunu kullanmalısınız.
Örneğin şöyle bir json veriniz var diyelim:

[
    { "ad": "B. Kağan", "soyad": "ATAGÜN" },
    { "ad": "Tayfun", "soyad": "ERBİLEN" } 
]
JSON

Siz bu değeri json_decode() fonksiyonuyla $cikti_json değişkenine aldınız:

$cikti_json=json_decode('[{ "ad": "B. Kağan", "soyad": "ATAGÜN" }, { "ad": "Tayfun", "soyad": "ERBİLEN" }]');
PHP

Şu şekilde, dizinizdeki kişilerin ad-soyad bilgilerini ekrana yazdırabilirsiniz:

for($i = 0; $i < count($cikti_json); $i++) {
    echo "<div><strong>Ad:</strong> {$cikti_json[$i]->ad} - <strong>Soyad:</strong> {$cikti_json[$i]->soyad}</div>;
}
PHP

foreach ile yapmak için:

foreach($cikti_json as $item) {
    echo "<div><strong>Ad:</strong> {$item->ad} - <strong>Soyad:</strong> {$item->soyad}</div>;
}
PHP

NOT: json_decode() komutu json içindeki array'ları kendi Array'ına, object'leri de kendi stdClass'ına çeviriyor'ına çeviriyor. stdClass içeriğine erişmek için dizilerdeki gibi [ ] içine key yazmak yerine -> ifadesinden sonra key yazmak gerekiyor.

Başka bir örnek vereyim. Bu sefer json bir dizi değil sadece object olsun.

$cikti_json=json_decode('{ "customer": "Emre", "shipmentAddress": "Samsun" }');
echo "Müşteri {$cikti_json->customer} için teslimat adresi {$cikti_json->shipmentAddress} olarak belirtilmiş.";
PHP
mcfearcombat
1073 gün önce
    foreach($cikti_json as $key => $value){
	$orderNum=$value["orderNumber"];
	echo $orderNum ."<br/>";
}
PHP

bu şekilde foreach ile tüm belirtilen etiketleri çekmede de başarılı olamadım ne yazik ki sorunum nerede anlayamadım.

mcfearcombat
1073 gün önce

efendim cevabını için teşekkür ederim ancak şöyle bir problem yaşamaktayım.

$cikti_json=json_decode($cikti);
echo "<pre>";
print_r($cikti_json);
PHP

bu şekilde kullandığımda sorunsuz ekrana tüm verileri yazdırıyorum ancak

$cikti_json=json_decode($cikti, true);
echo $cikti_json['shipmentAddress'];
PHP

bu şekilde diziyi çözüp yazdırmaya çalıştığımda herhangi bir çıktı alamıyorum, ne tür bir hata yapmaktayım acaba ?

ebykdrms
1073 gün önce

Merhaba. json'u decode edip bir PHP dizisi haline geirdikten sonra işlemlerinizi yapmanız daha uygun olacaktır. Aksi halde json'un string hali üzerinde, yani aslında düz bir metin üzerinde arama yaparak işlemlerinizi yapmanız gerekir ve bu çok sağlıklı olmaz. Hatta kodunuz geliştikçe json_decode()'nin yaptığı işi kendiniz yapmak zorunda kalabilirsiniz.
json_decode() ile değerleri PHP array'ına çevirdikten sonra veriler üzerinde istediğiniz gibi döngüler kurabilir, istediğiniz değerleri kolayca başka değişkenlere atayıp buradan insert işleminizi gerçekleştirebilirsiniz.