Как Вы проверяете, является ли значение столбцов нулевым? Пример кода:
$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????
{
...
}
Спасибо за все ваши ответы. После небольшого экспериментирования этот код решил мою проблему
$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!!!
{
...
}
Разве это не то, что вы хотите сделать?
foreach($row as $r){
if($r->total_rating_votes == null){
//do something
}
На самом деле вы могли бы попробовать:
if($r->total_rating_votes == ""){/*do something*/}
Потому что php мог преобразовать значение null в пустую строку, и тогда это на самом деле не null, а ""
Надеюсь, это поможет!
Когда вы подключаетесь к базе данных, вы можете установить некоторые атрибуты, чтобы управлять тем, как PDO обрабатывает пустые значения и пустые строки, когда они возвращаются запросом к базе данных
PDO :: setAttribute (PDO :: ATTR_ORACLE_NULLS, $ option)
Где $ option может быть одним из следующих: