• 10-07-2021, 14:58:21
    #1
    Merhaba, amacım apiden verileri çekip eğer daha önceden veri tabanına kayıtlanmamışsa bu bilgileri veritabanına kaydetmesini sağlamak. Eğer veritabanına daha önceden kayıtlı ise hata vermesi. Nerede hata yapıyorum? yardımcı olabilir misiniz?

    Kod :
    <?php
    $app_id = 'SANSÜR'; 
    $app_secret = 'SANSÜR'; 
    $code = $_GET['code']; 
    
    $get = file_get_contents("https://SANSÜR/authorize?app_id={$app_id}&app_secret={$app_secret}&code={$code}");
    
    $json = json_decode($get, true);
    if (!empty($json['access_token'])) {
       $access_token = $json['access_token'];
       $type = "get_user_data";
       $get = file_get_contents("https://SANSÜR/app_api?access_token={$access_token}&type={$type}");
        header('Content-type:application/json;charset=utf-8');
        $obj = json_decode($get);
    
        $user_id = $obj->user_data->id;
        $user_name = $obj->user_data->username;
        $email = $obj->user_data->email;
        $first_name = $obj->user_data->first_name;
        $last_name = $obj->user_data->last_name;
        $gender = $obj->user_data->gender;
        
    
    try {
        $baglanti = new PDO("mysql:host=localhost;dbname=SANSÜR", "SANSÜR", "SANSÜR");
        $baglanti->exec("SET NAMES utf8");
        $baglanti->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        
        $sorgu = $baglanti->prepare("SELECT * FROM users WHERE user_id = :user_id");
        $sorgu->bindParam(':user_id', $user_id, PDO::PARAM_STR);
        $sorgu->execute();
        if(!$sorgu || $sorgu->rowCount() <= 0){
            echo "hata";
            die();
        }else{
    
            $sorgu = $baglanti->prepare("INSERT INTO users(user_id, user_name, email, first_name, last_name, gender) VALUES(?, ?, ?, ?, ?, ?)");
            $sorgu->bindParam(1, $user_id, PDO::PARAM_STR);
            $sorgu->bindParam(2, $user_name, PDO::PARAM_STR);
            $sorgu->bindParam(3, $email, PDO::PARAM_STR);
            $sorgu->bindParam(4, $first_name, PDO::PARAM_STR);
            $sorgu->bindParam(5, $last_name, PDO::PARAM_STR);
            $sorgu->bindParam(6, $gender, PDO::PARAM_STR);
            $sorgu->execute();
        }
        } catch (PDOException $e) {
            die($e->getMessage());
        }
    
        $baglanti = null;
        }
    
    ?>
    Not : sansürleri şimdi yazdım.

    Şimdiden teşekkür ederim
  • 10-07-2021, 15:07:37
    #2
    hocam keşke aldığınız hatayı da ekleseydiniz. {$app_id} olan kısımdaki süslü paratnezleri kaldırıp denediniz mi ? çünkü " içerisinde değişkenleri hiçbi ek olmadan kullanabilirsiniz.
  • 10-07-2021, 15:09:23
    #3
    kleisberg adlı üyeden alıntı: mesajı görüntüle
    hocam keşke aldığınız hatayı da ekleseydiniz. {$app_id} olan kısımdaki süslü paratnezleri kaldırıp denediniz mi ? çünkü " içerisinde değişkenleri hiçbi ek olmadan kullanabilirsiniz.
    Ondan değilmiş hocam yine çok basit bir yerde hata yapmışım. rowCount > 0 olması gerekiyordu. Teşekkür ederim yinede

    @nisanci53; hocam sağolsun farkettirdi.

    Teşekkürler