• 01-01-2023, 12:59:36
    #1
    Arkadaşlar merhaba, php ile sql sorgusunu, json dosyasına yazdırıyorum fakat sunucuyla alakalı bir sorun olduğunda hata mesajı veriyor ve json dosyasına bu mesajı yazıyor.
    Dosyada yazılan verileri mysql'e aktardığım için dolayısıyla hata mesajını aktarmış oluyorum.

    Herhangi bir hata olduğunda dosyaya yazmasını nasıl engellerim.


    Örnek hata kodu.

    Array
    (
    [ModelType] => 0
    [ExceptionMessage] => Attempting to deserialize an empty stream.
    [StackTrace] => ICAgYXQgTWljcm9zb2
    [ErrorSource] => LoginService
    [StatusCode] => 400
    )
  • 01-01-2023, 13:08:43
    #2
    $veri=Array
    (
    [ModelType] => 0
    [ExceptionMessage] => Attempting to deserialize an empty stream.
    [StackTrace] => ICAgYXQgTWljcm9zb2
    [ErrorSource] => LoginService
    [StatusCode] => 400
    );
    if($veri["ExceptionMessage"]=="Attempting to deserialize an empty stream."){
    //burada hata yazdırabilirsen yada hiçbirşey yaptırma
    }else{
    //veritabanına yazdır
    }

    yada sadece hata aldığında bu dönüyor ise
    if(!isset($veri["ExceptionMessage"])){
    //veritabanına yazdır
    }
  • 01-01-2023, 13:08:55
    #3
    Başarılı statuscode numarası kaç ise ona göre bir if denetimi ile denetleyebilirsiniz veya tersine, başarısız statuscode numaraları geldiğinde işlem yaptırmayabilirsiniz
  • 01-01-2023, 13:14:45
    #4
    ErayEfe adlı üyeden alıntı: mesajı görüntüle
    Başarılı statuscode numarası kaç ise ona göre bir if denetimi ile denetleyebilirsiniz veya tersine, başarısız statuscode numaraları geldiğinde işlem yaptırmayabilirsiniz
    String değere if atmaktansa durum koduna if atmak daha mantıklı. Json'un statuscode değerlerine göre if atarsanız arkadaşın dediği gibi daha sağlıklı bir yapı kurmuş olursunuz.
  • 01-01-2023, 13:28:37
    #5
    suleymankocabas adlı üyeden alıntı: mesajı görüntüle
    $veri=Array
    (
    [ModelType] => 0
    [ExceptionMessage] => Attempting to deserialize an empty stream.
    [StackTrace] => ICAgYXQgTWljcm9zb2
    [ErrorSource] => LoginService
    [StatusCode] => 400
    );
    if($veri["ExceptionMessage"]=="Attempting to deserialize an empty stream."){
    //burada hata yazdırabilirsen yada hiçbirşey yaptırma
    }else{
    //veritabanına yazdır
    }

    yada sadece hata aldığında bu dönüyor ise
    if(!isset($veri["ExceptionMessage"])){
    //veritabanına yazdır
    }


    Öncelikle cevap veren tüm arkadaşlara ayrı ayrı teşekkür ederim.
    -Önce .json dosyası oluşturuyorum oluşturulan dosyayı veri tabanına aktarıyorum .
    Bahsettiğiniz gibi ExceptionMessage sadece hata olduğunda dönüyor. Ama aşağıda ki gibi kontrol sağlattığımda değişen birşey olmadı.



    if(!isset($jomedya_veriler["ExceptionMessage"])){
    $fp = fopen('veriler.json', 'w');
    fwrite($fp, json_encode($jomedya_veriler, JSON_UNESCAPED_UNICODE));
    fclose($fp);

    echo 'Json Dosyası Oluşturuldu';
    } else {
    $fp = fopen('log.txt', 'w');
    fwrite($fp, date('Y-m-d H:i:s')." Ürünler Çekilemedirn");
    fclose($fp);
    echo "Veri Alınamadı";
    }
  • 01-01-2023, 13:34:04
    #6
    Jomedya adlı üyeden alıntı: mesajı görüntüle
    Öncelikle cevap veren tüm arkadaşlara ayrı ayrı teşekkür ederim.
    -Önce .json dosyası oluşturuyorum oluşturulan dosyayı veri tabanına aktarıyorum .
    Bahsettiğiniz gibi ExceptionMessage sadece hata olduğunda dönüyor. Ama aşağıda ki gibi kontrol sağlattığımda değişen birşey olmadı.



    if(!isset($jomedya_veriler["ExceptionMessage"])){
    $fp = fopen('veriler.json', 'w');
    fwrite($fp, json_encode($jomedya_veriler, JSON_UNESCAPED_UNICODE));
    fclose($fp);

    echo 'Json Dosyası Oluşturuldu';
    } else {
    $fp = fopen('log.txt', 'w');
    fwrite($fp, date('Y-m-d H:i:s')." Ürünler Çekilemedirn");
    fclose($fp);
    echo "Veri Alınamadı";
    }
    Api hata olduğu zaman sadece ilk mesajınızdaki array'i mi döndürüyor?
  • 01-01-2023, 13:36:24
    #7
    thealiyasar adlı üyeden alıntı: mesajı görüntüle
    Api hata olduğu zaman sadece ilk mesajınızdaki array'i mi döndürüyor?

    Evet, hata olduğu zaman sadece ilk mesajınızdaki array'i döndürüyor.
    Hata olmadığı zaman
    Array
    (
    [0] => Array
    (
    [sayinuamrasi] => 30
    )

    [1] => Array
    (
    [sayinuamrasi] => 31
    )

    [2] => Array
    (
    [sayinuamrasi] => 32
    )
  • 01-01-2023, 14:04:22
    #8
    if(isset($veriler["ExceptionMessage"])){

    echo 'Hata Var';

    } else {
    json oluştur şeklinde çözdüm.


    Tüm yanıtlayan arkadaşlara tekrar teşekkür ederim.
  • 02-01-2023, 03:52:12
    #9
    @Jomedya;

    Eğer bir hata olursa json dosyasına yazılmamasını istiyorsanız, try-catch bloğu kullanarak hataları yakalayabilir ve hatayı dosyaya yazdırmamak için gerekli işlemleri yapabilirsiniz. Örneğin:
    try {  // Hata oluşabilecek kodlar burada yazılır  // Örneğin: SQL sorgusu çalıştırma ve sonucunu json dosyasına yazdırma
    } catch (Exception $e) {  // Hata oluştuğunda burası çalışır  // Hata mesajını ekrana yazdırma veya log dosyasına yazdırma gibi işlemler yapılabilir  // Ancak json dosyasına yazdırılmasını engellemek için bir işlem yapılmaz
    }
    Bu şekilde, hataları yakalayarak, hataların json dosyasına yazdırılmasını engellediğinizi unutmayın.