PHP PDO fetch null

Как проверить, имеет ли значение столбца значение null? Пример кода:

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

Когда вы подключаетесь к базе данных, вы можете установить некоторые атрибуты для управления тем, как PDO обрабатывает Nulls и Empty Strings, когда они возвращаются запросом базы данных

PDO :: setAttribute (PDO :: ATTR_ORACLE_NULLS, $ option)

Где $ option является одним из следующих:

  • PDO :: NULL_NATURAL: Без преобразования.
  • PDO :: NULL_EMPTY_STRING: пустая строка преобразуется в NULL.
  • PDO :: NULL_TO_STRING: NULL преобразуется в пустую строку.

Разве это не то, что вы хотите сделать?

 foreach($row as $r){ if($r->total_rating_votes == null){ //do something } 

На самом деле вы можете попробовать:

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

Поскольку php, возможно, преобразовал нулевое значение в пустую строку, а затем он фактически не является нулевым, это ""

Надеюсь это поможет!

Спасибо за все ваши ответы. После небольшого количества экспериментов этот код решил мою проблему

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