PHP PDO получить ноль - PullRequest
       17

PHP PDO получить ноль

5 голосов
/ 18 мая 2010

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

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

Ответы [ 3 ]

13 голосов
/ 18 мая 2010

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

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

Где $ option - одно из следующего:

  • PDO :: NULL_NATURAL: без преобразования.
  • PDO :: NULL_EMPTY_STRING: пустая строка преобразуется в NULL.
  • PDO :: NULL_TO_STRING: NULL преобразуется в пустую строку.
2 голосов
/ 18 мая 2010

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

foreach($row as $r){

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

  //do something

}

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

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

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

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

0 голосов
/ 24 мая 2010

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

$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!!!
{
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...