проблема с условием if else для переменной из базы данных - PullRequest
0 голосов
/ 20 апреля 2009

Я получаю поле из базы данных в $ subcat. Если $ subcat имеет значение null, я хочу показать форму для добавления в категорию, в противном случае я хочу отобразить категорию. $ subcat определенно существует и правильно извлекается. Это либо ноль, либо строка.

if ($subcat != null) {
$showCategory = "<p><strong>Auction Category: </strong> ".$tmp['subcat'];
}
else 
{
$showCategory = "<form name=\"categoryForm\">
  <input name=\"radiobutton\" type=\"radio\" value=\"fakeapproved\" />Fake (Approved)<p>
  <input name=\"radiobutton\" type=\"radio\" value=\"fakesuspected\" />Fake (Suspected)<p>
  <input name=\"radiobutton\" type=\"radio\" value=\"keyword\" />Forbidden Keywords<p>
  <input name=\"radiobutton\" type=\"radio\" value=\"parallelimport\" />Parallel Imports
  <input name=\"Submit\" type=\"submit\" value=\"Update\" onclick=\"handleClick(".$pk.");return false\"/>
</form>";
}

Однако все, что показано, это форма. Когда $ subcat определенно, без сомнения, не нулевой, форма все еще отображается. Я попытался поменять предложения else вокруг, но затем отобразилась категория, даже когда $ subcat был достоверно нулевым.

Ответы [ 2 ]

2 голосов
/ 20 апреля 2009

ноль работает, если переменная на самом деле NULL. Если переменная представляет собой пустую строку (""), ноль, ложь или пустой массив, is_null оценивается как ложное. Это несколько нелогично, поэтому я бы всегда предложил использовать empty ().

empty () возвращает true для 0, пустой строки, пустого массива, логического false или NULL. Так что попробуйте:

if(!empty($subcat)){ do something; }

Используйте is_null, только если вы на 100% уверены, что ТОЛЬКО хотите что-то сделать, если переменная равна NULL. Пусто обычно лучше проверить, собираетесь ли вы вызывать метод класса для чего-то неожиданного.

Edit: Да, иногда получение NULL из базы данных дает вам строку "NULL", которая не совпадает с фактическим значением NULL. Это зависит от того, какую базу данных вы используете, и от того, как вы сохранили значение в базе данных. Это очень легко пропустить и может потребоваться вечность, чтобы понять. Попробуйте использовать var_dump () для переменной subcat, чтобы увидеть, является ли она строкой "NULL" (4) или буквально значением NULL. Это может объяснить непредвиденное поведение в другом сегменте кода, который вы упомянули в комментариях.

0 голосов
/ 20 апреля 2009

В php вы можете проверить, является ли переменная нулевой, используя is_null

Так что используйте:

if (!is_null($subcat)) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...