2012-07-27 39 views
10

ayarlamak reddediyor. Düz sql kullanarak yapabilirim.PHP mysql PDO NULL değeri

denedim:

  1. Boş Int

    bindValue(':param', null, PDO::PARAM_INT); 
    
  2. Boş Boş,

    bindValue(':param', null, PDO::PARAM_NULL); 
    
  3. 'Boş' Int

    (çoğunlukla bu soruya How do I insert NULL values using PDO? itibaren) bir değişkenle

    bindValue(':param', 'NULL'); 
    
  4. ve 5 bindParam karşılıkları ve bu 6

    bindValue(':param', 'NULL', PDO::PARAM_INT); 
    
  5. 'boş' Boş

    bindValue(':param', 'NULL', PDO::PARAM_NULL); 
    
  6. Boş

    bindValue(':param', null); 
    
  7. 'Boş' olduğu bağlamanın değerini tuttu. değerindeki PDO sonuçlarından

Herşey 0.

PHP Version ayarlı olan:PHP 5.3.2-1ubuntu4.10

MYSQL SUNUCU VERSION:5.1.63-0ubuntu0.10.04.1

DÜZENLEMEBenim için sütun bilgi aşağıdaki eserlerini

Picture

+0

kolon tipi nedir? Bu nullable mı? –

+2

@ DanielA.Bir o sadece düz sql üzerinden yapabileceğini söyledi evet evet null. –

+0

Bize sadece bindValue ifadeleriniz yerine kodunuzun geri kalanını gösterebilir misiniz?Tüm bu seçenekleri denediyseniz ve gerçek veritabanınızla ilgili bir sorun olmadığını düşünüyorsanız, kodunuzun geri kalanıyla ilgili bir sorun olmalı. –

cevap

9

0 Ekran Görüntüsü: PDO::PARAM_NULL türüne PHP'nin null yılında

<?php 

$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "pass"); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

$stmt = $pdo->prepare("INSERT INTO `null_test` (`can_be_null`) VALUES (:null)"); 
$stmt->bindValue(":null", null, PDO::PARAM_NULL); 

$stmt->execute(); 

Pass,. Ayrıca, hazırlık öykünüzü yanlış olarak ayarladığınızdan emin olun. Bu yardımcı olabilir.

+6

Bu ... '$ pdo-> setAttribute (PDO :: ATTR_EMULATE_PREPARES, false)' 'Buradaki küçük adam hiledir. @Truth, Teşekkürler! Büyük yakalamak! – wmarbut

0

Önce tüm parametreleri değişkenlere atamanızı ve sonra bu değişkenleri bindParam() yöntemine iletmenizi öneririz.

NULL değerini bu değişkenlere geçirerek atayabilir ve iyi çalışır.

$myVar = NULL; 
$conn->bindParam(':param1' , $myVar , PDO::PARAM_STR); 

kadar yolu Pakistan :)