PHP PDO, null getir

4 Cevap php

Bir sütun değeri null olup olmadığını nasıl kontrol edebilirim? Örnek kod:

$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????
{
...
}

4 Cevap

Tüm cevaplar için teşekkürler. Deney biraz sonra bu kod benim sorunum çözüldü

$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!!!
{
...
}

Eğer veritabanına bağlandığınızda, onlar veritabanı sorgu tarafından döndürülen zaman PDO Nulls ve Boş dizeler nasıl işleyeceğini kontrol etmek için bazı özelliklerini ayarlayabilirsiniz

PDO :: setAttribute (PDO :: ATTR_ORACLE_NULLS, $ seçenek)

$ Seçenek, aşağıdakilerden biridir:

  • PDO :: NULL_NATURAL: Hayır dönüşüm.
  • PDO :: NULL_EMPTY_STRING: Boş stringis NULL'a dönüştürülür.
  • PDO :: NULL_TO_STRING: NULL boş bir dizeye dönüştürülür.

Bunu yapmak istediğiniz böyle bir şey değil mi?

foreach($row as $r){

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

  //do something

}

Aslında denemek isteyebilirsiniz:

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

Php boş bir dizeye null değer dönüştürülmüş olabilir ve o zaman gerçekten boş değil, çünkü "" bulunuyor

Bu yardımcı olur umarım!

if ($ row-> sütun_adı) {... kodlar ...}

Ben bu gibi kontrol olur. Veya fonksiyonu ile boş ().

EDIT: I think that the way you are doing you are not accesing well to the data and you are assigning an empty string to the $this->total_rating_votes, so that does not make it null. I guess the way you fetch the data does not convert $row into an array, being $row an object.