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
Форумы портала PHP.SU :: Версия для печати :: Не работает вывод else
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Не работает вывод else

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

1. Александерр - 29 Мая, 2015 - 00:28:52 - перейти к сообщению
Пожалуйста помогите else не выводит информацию просто пустота после запроса с неверным логином. А с верным логином все ок выводит.
Вот код:
PHP:
скопировать код в буфер обмена
  1.     if (isset($_POST['login_p'])){
  2.         $parametersp = array(':login' => $_POST['login_p']);
  3.         $sqlp = 'SELECT login,email FROM users WHERE login = :login ';
  4.         $sth = $bd->prepare($sqlp);
  5.         $sth->execute($parametersp);
  6.         while($row = $sth->fetchall(PDO::FETCH_ASSOC))
  7.         foreach ($row as $dataa){
  8.         if($sth->columnCount() > 0)
  9.         {$message="Пользователь c таким логином найден";} else  {$message="Пользователь с таким логином не найден";}
  10.     }
  11.     }
2. KingStar - 29 Мая, 2015 - 00:35:47 - перейти к сообщению
потому что ты делаешь запрос, и есть поле найдено - то оно обрабатывается в цикле while, а потом еще и в foreach, где и выводит соответствующее сообщение

если не найдено - то в while цикла нет, и до foreach ничего не доходит, а следовательно и выводить нечего
3. Александерр - 29 Мая, 2015 - 21:06:32 - перейти к сообщению
KingStar пишет:
потому что ты делаешь запрос, и есть поле найдено - то оно обрабатывается в цикле while, а потом еще и в foreach, где и выводит соответствующее сообщение

если не найдено - то в while цикла нет, и до foreach ничего не доходит, а следовательно и выводить нечего

убрал while все ровно не хочет выводится else SOS
PHP:
скопировать код в буфер обмена
  1.       if (isset($_POST['login_p'])){
  2.         $parametersp = array(':login' => $_POST['login_p']);
  3.         $sqlp = 'SELECT * FROM users WHERE login = :login ';
  4.         $sth = $bd->prepare($sqlp);
  5.         $sth->execute($parametersp);
  6.         foreach ($sth  as $dataa){
  7.         if($sth->columnCount() >0)
  8.         {$message="Пользователь c таким логином найден";} else
  9.         {$message="Пользователь с таким логином не найден";}
  10.     }
  11.     }
4. Sail - 30 Мая, 2015 - 11:39:55 - перейти к сообщению
Александерр, количество полученных в результате запроса записей набора надо анализировать до цикла обхода этих записей (будь то while или foreach).
(Добавление)
Ну или проверять, что цикл успешно пройден мимо, без захода в его тело...
(Добавление)
Если уж сложно (или вовсе невозможно из-за особенностей реализации) проверить возвращенное функцией "somedbObertka::execute()" значение.

 

Powered by ExBB FM 1.0 RC1