2010-05-18 6 views
5

Sütun değeri sıfır olup olmadığını nasıl kontrol edersiniz? Örnek kod: veritabanına bağlandığınızdaPHP PDO getirme sıfır

$db = DBCxn::getCxn(); 

$sql = "SELECT exercise_id, author_id, submission, result, submission_time, total_rating_votes, total_rating_values 
FROM submissions 
LEFT OUTER JOIN submission_ratings ON submissions.exercise_id=submission_ratings.exercise_id 
WHERE id=:id"; 

$st = $db->prepare($sql); 

$st->bindParam(":id", $this->id, PDO::PARAM_INT); 

$st->execute(); 
$row = $st->fetch(); 

$this->total_rating_votes = $row['total_rating_votes']; 

if($this->total_rating_votes == null) // this doesn't seem to work even though there is no record in submission_ratings???? 
{ 
... 
} 
+2

'$ row ['total_rating_votes'];' içerir? –

+0

$ satır ['total_rating_votes']; submit_ratings tablosunda kayıt bulunamadığı için NULL içermelidir. Sorguyu mysqladmin'de çalıştırarak bunu doğruladım. – Jacob

+0

Kayıt yok ise, $ row ['total_rating_votes'] ayarlanmamış. Bir print_r ($ row) yapın. Bulunan kayıtların sayısı olacak yürütmenin dönüş değerini kontrol etmelisiniz. –

cevap

0

Tüm cevaplarınız için teşekkürler. Biraz deneme yaptıktan sonra bu kod benim sorunumu çözdü

$this->total_rating_votes = $row['total_rating_votes']; 

if(!isset($this->total_rating_votes)) // this is now true if this record had a NULL value in the DB!!! 
{ 
... 
} 
12

, onlar veritabanı sorgusu

PDO :: setAttribute (PDO tarafından iade edildiğinde PDO Boşlara ve Boş Dizeleri nasıl işleyeceğini kontrol etmek için bazı özelliklerini ayarlayabilirsiniz: : ATTR_ORACLE_NULLS $, opsiyon)

$ seçenek aşağıdakilerden biridir

:

  • PDO :: NULL_NATURAL: Hayır dönüşüm.
  • PDO :: NULL_EMPTY_STRING: Boş dizgeler NULL olarak dönüştürülür.
  • PDO :: NULL_TO_STRING: NULL boş bir dizeye dönüştürülür.
2

Yapmak istediğiniz gibi bir şey değil mi?

foreach($row as $r){ 

if($r->total_rating_votes == null){ 

    //do something 

} 

Aslında denemek isteyebilirsiniz: php boş bir dize içine boş değer dönüştürülmüş olabilir ve o zaman gerçekten boş değil Çünkü

, bu

Umut bu "" var

if($r->total_rating_votes == ""){/*do something*/} 

yardım eder!