Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: if: почему условие проходит?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Aricus
Отправлено: 23 Октября, 2014 - 21:00:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




Переменная получена запросом из MySQL:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $qAnswers = mysql_fetch_row (mysql_query("SELECT `Otvetov` FROM `questions` WHERE `Nomer` = '{$_GET['num']}'",$link));

Проверив БД, я убедился, что в ячейке стоит только цифра 0. Никаких других знаков там нет. И тем не менее,
CODE (htmlphp):
скопировать код в буфер обмена
  1. if ($qAnswers[0] !== 0) echo $qAnswers[0];

выдаёт: 0
Почему это условие проходится?
 
 Top
kotyara1979
Отправлено: 23 Октября, 2014 - 21:10:25
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




1. А тип поля в базе какой? строка?
2. а print_r($qAnswers) что выводит?


-----
Сделать можно все. Главное одеть каску.
 
 Top
Aricus
Отправлено: 23 Октября, 2014 - 21:14:41
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




1. Нет, smallint
2. Array ( [0] => 0 )
 
 Top
OrmaJever Модератор
Отправлено: 23 Октября, 2014 - 21:16:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




да, только тип у этого числа string.

Всё что выбирается с базы имеет тип string. Когда ж вы уже узнаете про var_dump()


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Aricus
Отправлено: 23 Октября, 2014 - 21:20:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




Ну, я как-то привык, что php знает, когда я задаю число, а когда текст.
А как перевести в числовой тип?
 
 Top
RickMan
Отправлено: 23 Октября, 2014 - 21:22:43
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Используйте не строгое сравнение
PHP:
скопировать код в буфер обмена
  1. if ($qAnswers[0] != 0) echo $qAnswers[0];

или же
PHP:
скопировать код в буфер обмена
  1. if (intval($qAnswers[0]) !== 0) echo $qAnswers[0];

или
PHP:
скопировать код в буфер обмена
  1. if ((int)$qAnswers[0] !== 0) echo $qAnswers[0];

(Добавление)
или же
PHP:
скопировать код в буфер обмена
  1. if ($qAnswers[0] !== '0') echo $qAnswers[0];
 
 Top
OrmaJever Модератор
Отправлено: 23 Октября, 2014 - 22:05:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Aricus пишет:
Ну, я как-то привык, что php знает, когда я задаю число, а когда текст.

это самая главная ошибка. Нельзя привыкать, темболее когда задаёте не вы, а какая нибудь другая функция, например mysql_fetch_row.
Aricus пишет:
А как перевести в числовой тип?

банальные основы Хм


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB