• 01-02-2025, 16:31:50
    #1
    PDO kütüphanesi ile MySQL INSERT INTO işlemi yaparken, string veya null türünde gelebilecek bir değeri kaydetme yönteminiz nedir?
  • 01-02-2025, 16:36:35
    #2
    JSON / base64 verisi olarak kayıt edebilirsiniz
  • 01-02-2025, 16:42:36
    #3
    Senior Web Developer
    Null değeri neden dbye kayıt ediyorum ki
  • 01-02-2025, 17:26:12
    #4
    borelphiyazilim adlı üyeden alıntı: mesajı görüntüle
    Null değeri neden dbye kayıt ediyorum ki
    Aşağıdaki örneğe benzer şekilde kullanan var mı, bu şekilde çalışıyor mu diye merak ettim. Benim yapılandırmada çalışmıyor.
    // SQL sorgusu
    $sql = "INSERT INTO tablo_adi (sütun1, sütun2) VALUES (:deger1, :deger2)";
    $stmt = $pdo->prepare($sql);
    // Değerleri bağlama 
    $deger1 = 'Birinci Değer'; $stmt->bindValue(':deger1', $deger1);
    // NULL değeri bağlama 
    $stmt->bindValue(':deger2', null, PDO::PARAM_NULL);
    // Sorguyu çalıştırma 
    $stmt->execute();
  • 01-02-2025, 17:36:27
    #5
    deeprock2 adlı üyeden alıntı: mesajı görüntüle
    Aşağıdaki örneğe benzer şekilde kullanan var mı, bu şekilde çalışıyor mu diye merak ettim. Benim yapılandırmada çalışmıyor.
    // SQL sorgusu
    $sql = "INSERT INTO tablo_adi (sütun1, sütun2) VALUES (:deger1, :deger2)";
    $stmt = $pdo->prepare($sql);
    // Değerleri bağlama
    $deger1 = 'Birinci Değer'; $stmt->bindValue(':deger1', $deger1);
    // NULL değeri bağlama
    $stmt->bindValue(':deger2', null, PDO::PARAM_NULL);
    // Sorguyu çalıştırma
    $stmt->execute();
    Selamlar.
    Bindvalue yada execute kullanarak yapabilirsiniz.
    try {
        $sql = "INSERT INTO tablo_adi (sutun1, sutun2) VALUES (:deger1, :deger2)";
        $stmt = $pdo->prepare($sql);
        
        $deger1 = 'Birinci Değer';
        $deger2 = null;
        
        // String değer için
        $stmt->bindValue(':deger1', $deger1, PDO::PARAM_STR);
        
        // NULL değer için
        $stmt->bindValue(':deger2', $deger2, 
            $deger2 === null ? PDO::PARAM_NULL : PDO::PARAM_STR);
        
        $stmt->execute();
        
    } catch(PDOException $e) {
        echo "Hata: " . $e->getMessage();
    }
    Execute :

    try {
        $sql = "INSERT INTO tablo_adi (sutun1, sutun2) VALUES (:deger1, :deger2)";
        $stmt = $pdo->prepare($sql);
        
        $deger1 = 'Birinci Değer';
        $deger2 = null;
        
        $stmt->execute([
            ':deger1' => $deger1,
            ':deger2' => $deger2
        ]);
        
    } catch(PDOException $e) {
        echo "Hata: " . $e->getMessage();
    }
    PDO'nun varsayılan yapılandırmasında NULL değerler otomatik olarak doğru şekilde işlenir, bu nedenle özel olarak PDO::PARAM_NULL belirtmenize genellikle gerek yok, İkinci yöntem daha kısa ve genellikle tercih edilen bir yöntemdir. PDO otomatik olarak NULL değerleri doğru şekilde yansıtır.
    Sevgiler.
  • 01-02-2025, 17:42:15
    #6
    @PropJoe iki yönetim de demiştim, çalışmadı.
    İkinci yöntemdekine benzer şekilde yapıyorum. Farkı; SQL sorgusu kısmında VALUES'un sol ve tarafını, null kaydetmek istediklerimi çıkararak oluşturuyorum.
  • 01-02-2025, 20:09:32
    #7
    deeprock2 adlı üyeden alıntı: mesajı görüntüle
    @PropJoe iki yönetim de demiştim, çalışmadı.
    İkinci yöntemdekine benzer şekilde yapıyorum. Farkı; SQL sorgusu kısmında VALUES'un sol ve tarafını, null kaydetmek istediklerimi çıkararak oluşturuyorum.
    Dosyadaki kodları paylaşır mısın belki bir yerde çakışma vardır?
  • 01-02-2025, 20:19:21
    #8
    Senior Web Developer
    Hocam DB kolonu varsayılan ne alıyor ve boş olabilir kontrolü açık mı?
    Eğer varsayılan null olarak dbden setlersen values göndermezsen null setlenir
  • 01-02-2025, 20:33:23
    #9
    if (!empty($addUserDTO->$value)) {      
        $addUser->bindValue($param, $addUserDTO->$value, PDO::PARAM_STR);    
    } else {        
        $addUser->bindValue($param, null, PDO::PARAM_NULL);  // PARAM_NULL kullanımı    
    }
    @PropJoe Yukarıdaki gibi denediğimde, $addUserDTO->$value'nın değeri empty ise null kaydı yapmıyor.

    @borelphiyazilim; Varsayılan değer için NULL atanıyor. Boş olabilir kontrolü açık.
    Alıntı
    "Eğer varsayılan null olarak dbden setlersen values göndermezsen null setlenir".
    Evet, dediğiniz gibi yapıyordum; onda sorun yok. Farklı çözüm yolu kullanarak, yani bindValue ile yapabilir miyim diye merak ettim.