php - проверка, установлена ​​ли переменная / истинно ли / существует - PullRequest
1 голос
/ 02 января 2012

В моем коде я проверяю, существуют ли переменные.Но это не так, как я ожидаю.

Вот что я пытаюсь сделать:

  1. Получить $result из базы данных.
  2. Выполнить блок кода только в том случае, если результат был извлечен (в противном случае ничего не делать / пропустить / перейти вперед).

Я использовал if(isset($result)), но это не кажетсячтобы работать, похоже, что if выполняется, хотя это не должно происходить, когда в $ result нет данных.(но с проблемами, потому что в этом блоке нет действительной переменной $result)

Ответы [ 5 ]

3 голосов
/ 02 января 2012

Разве у вас не работает if($result)?Если у вас есть сообщение об ошибке с E_NOTICEs, попробуйте if(isset($result) && $result)

2 голосов
/ 02 января 2012

Isset работает только для неинстанцированных переменных.Когда вы устанавливаете $ result в ответ db, вы фактически устанавливаете переменную.

Вместо этого вы можете использовать mysql_fetch_assoc (resource $ result) или mysql_fetch_array (resource $ result [, int $ result_type = MYSQL_BOTH]) в зависимости от того, чтоты хочешь сделать.Обе эти функции вернут false, если ответа нет.

http://www.php.net/manual/en/function.mysql-fetch-assoc.php http://www.php.net/manual/en/function.mysql-fetch-array.php

2 голосов
/ 02 января 2012

В зависимости от того, как вы выполняете запрос, есть вероятность, что вы должны использовать empty() вместо isset().

Из документации:

isset
Определите, установлена ​​ли переменная и не равна ли NULL.

пусто
Определите, считается ли переменная пустой.

Например:

$var = '';

isset($var) вернет true, как было установлено, но empty($var) вернет false, поскольку его значение является пустой строкой.

1 голос
/ 02 января 2012

Чтобы проверить, извлечены ли какие-либо данные, используйте это:

$connect = mysql_connect("127.0.0.1",$sql_username,$sql_password);
$data = mysql_query($sql_query,$connect);
$result = mysql_fetch_array($data);
if($result) { ... }
1 голос
/ 02 января 2012

Если вы используете что-то вроде mysql_query, он вернет ресурс или false при ошибке.Это означает, что он всегда будет установлен.

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