• 19-12-2024, 19:35:53
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    php ile bot yazdım json verileri veritabanına kaydediyorum fakat aynı değere sahip olanları tekrar kaydetmesin nasıl yaparım
  • 19-12-2024, 19:39:31
    #2
    json stringini hash alıp olup olmadığını kontrol ettirebilirsiniz.
  • 19-12-2024, 19:42:35
    #3
    Yönetici onayı bekliyor
    veritabanına kaydettiriyorum herhangi bir sorun yok fakat mysql sorgusu attırıyorum hata alıyorum

  • 19-12-2024, 19:45:56
    #4
    // Veritabanı bağlantısı
    $conn = new mysqli("localhost", "username", "password", "database");
    
    // Hata kontrolü
    if ($conn->connect_error) {
        die("Bağlantı hatası: " . $conn->connect_error);
    }
    
    // JSON verisi
    $json_data = '{"unique_key":"12345","name":"Test"}';
    $data = json_decode($json_data, true);
    
    // Değerleri alma
    $unique_key = $data['unique_key'];
    $veri = json_encode($data);
    
    // Sorgu
    $sql = "INSERT INTO json_veriler (unique_key, veri) VALUES (?, ?)
            ON DUPLICATE KEY UPDATE veri = ?";
    
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("sss", $unique_key, $veri, $veri);
    
    if ($stmt->execute()) {
        echo "Veri kaydedildi veya güncellendi.";
    } else {
        echo "Hata: " . $stmt->error;
    }
    
    $stmt->close();
    $conn->close();
  • 19-12-2024, 19:46:20
    #5
    veya :

    // Veritabanı bağlantısı
    $conn = new mysqli("localhost", "username", "password", "database");
    
    // Hata kontrolü
    if ($conn->connect_error) {
        die("Bağlantı hatası: " . $conn->connect_error);
    }
    
    // JSON verisi
    $json_data = '{"unique_key":"12345","name":"Test"}';
    $data = json_decode($json_data, true);
    
    // Değerleri alma
    $unique_key = $data['unique_key'];
    $veri = json_encode($data);
    
    // Veritabanında kontrol
    $sql_check = "SELECT COUNT(*) AS count FROM json_veriler WHERE unique_key = ?";
    $stmt_check = $conn->prepare($sql_check);
    $stmt_check->bind_param("s", $unique_key);
    $stmt_check->execute();
    $result = $stmt_check->get_result();
    $row = $result->fetch_assoc();
    
    if ($row['count'] == 0) {
        // Veri ekleme
        $sql_insert = "INSERT INTO json_veriler (unique_key, veri) VALUES (?, ?)";
        $stmt_insert = $conn->prepare($sql_insert);
        $stmt_insert->bind_param("ss", $unique_key, $veri);
    
        if ($stmt_insert->execute()) {
            echo "Veri başarıyla kaydedildi.";
        } else {
            echo "Hata: " . $stmt_insert->error;
        }
    
        $stmt_insert->close();
    } else {
        echo "Bu veri zaten mevcut.";
    }
    
    $stmt_check->close();
    $conn->close();
  • 19-12-2024, 20:04:52
    #6
    İlgili kolona unique indexi atayın. Mysql aynı veri varsa kaydetme sırasında hata verip veriyi kaydetmeyecektir. Diğer yöntem ise SELECT EXISTS(SELECT 1 FROM veriler WHERE json_data='{$json_data}'); gibi bir sorgu ile veri kontrolü yapıp veri varsa es geçmek.
  • 19-12-2024, 20:08:03
    #7
    Yönetici onayı bekliyor
    kazimolmez adlı üyeden alıntı: mesajı görüntüle
    İlgili kolona unique indexi atayın. Mysql aynı veri varsa kaydetme sırasında hata verip veriyi kaydetmeyecektir. Diğer yöntem ise SELECT EXISTS(SELECT 1 FROM veriler WHERE json_data='{$json_data}'); gibi bir sorgu ile veri kontrolü yapıp veri varsa es geçmek.

    unique index'i neredennasıl atacağım phpmyadmin panelinden mi?
  • 19-12-2024, 20:09:39
    #8
    eda03 adlı üyeden alıntı: mesajı görüntüle
    unique index'i neredennasıl atacağım phpmyadmin panelinden mi?
    Evet, tablonun yapı bölümünden ilgili kolonun en sağında bulunan seçeneklerin içinde bulabilirsiniz.
  • 19-12-2024, 20:12:13
    #9
    Yönetici onayı bekliyor
    kazimolmez adlı üyeden alıntı: mesajı görüntüle
    Evet, tablonun yapı bölümünden ilgili kolonun en sağında bulunan seçeneklerin içinde bulabilirsiniz.
    Teşekkür ederim sorunum çözüldü