Как PHP обрабатывает NULL поля SQLite в ассоциативном результате? - PullRequest
0 голосов
/ 09 ноября 2018

Допустим, у меня есть таблица SQLite с полем с именем someValue. Скажем, я использую PHP для запроса к таблице, и возвращается строка, в которой someValue равно NULL.

Если я попытаюсь сослаться на $row['someValue'], что произойдет? Возвращает ли PHP значение null или генерирует «неопределенный индекс»? Я не могу найти это в документации. Что если я использую числовой индекс вместо ассоциативного? Если PHP возвращает null, является ли isset() true или false?

Бонус: это обрабатывается так же, как в других базах данных, таких как MySQL?

1 Ответ

0 голосов
/ 09 ноября 2018

Вы получите ошибку (неустранимую?) С неопределенным индексом, если я правильно помню.

и вы можете избежать этого, используя:

if(!empty($row)&&!empty($row['someValue'])){
  echo $row['someValue']
}

Таким образом, мы сначала проверяем $row, прежде чем проверять $row['someValue'], потому что в условиях php в операторах if "жадные", возвращаются, как только найден результат, а не анализируют все условия.

Я предпочитаю использовать !empty(), чем isset(), потому что по моему опыту это более надежно. Я избавлю вас от эссе, , но вот концепция , иногда вещи верны, когда они не верны и наоборот.

Согласно комментарию Лу , если я запускаю if( isset('') ), я получаю следующую ошибку:

Fatal error</b>: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)

... но если я использую if( !empty('') ), это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...