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 :: Версия для печати :: Поиск и сверка строк в sql
Форумы портала PHP.SU » » Вопросы новичков » Поиск и сверка строк в sql

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

1. Nizz - 10 Августа, 2017 - 15:32:31 - перейти к сообщению
Всем доброго времени суток ув. форумчане. Переписываю потихоньку код с использованием PDO. Не получается функция которая при регистрации проверяет значение из БД по полю логина. Помогите пожалуйста откорректировать
PHP:
скопировать код в буфер обмена
  1.  
  2. function CheckReLogin ($login){
  3.     $db = getPDOconnect ();
  4.     $sql = 'SELECT COUNT(*) FROM users WHERE login = :login';
  5.        
  6.      $result = $db->prepare($sql);
  7.      $result->bindParam(':login', $login, PDO::PARAM_STR);
  8.      $result->execute;
  9.  
  10.      if($result->fetchColumn())
  11.       return true;
  12.          
  13.    return false;
  14.      
  15. }
  16.  


При вызове функции всегда выдает значение true.

А вот эта строчка было до использования PDO и все работало корректно
PHP:
скопировать код в буфер обмена
  1.  
  2. $Row = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT `login` FROM `users` WHERE `login` = '$_POST[login]'"));
  3.        if ($Row['login']) MessageSend(1, 'Данный логин уже занят.', Refferer());
  4.  
2. andrewkard - 10 Августа, 2017 - 15:51:07 - перейти к сообщению
Может все таки $result->num_rows > 0 вместо fetchColumn
и в этот запрос непонятно зачем Вам SELECT COUNT(*)
достаточно же узнать есть ли вообще запись

SELECT login FROM users WHERE login = :login' LIMIT 1

$sth->execute();
3. Nizz - 10 Августа, 2017 - 17:45:40 - перейти к сообщению
К сожалению все-равно результат возвращает не правильный
Может я что-то упускаю из виду ?
PHP:
скопировать код в буфер обмена
  1.  
  2. function CheckReLogin ($login){
  3.     $db = getPDOconnect ();
  4.     $sql = 'SELECT login FROM users WHERE login = :login LIMIT 1' ;
  5.        
  6.      $result = $db->prepare($sql);
  7.      $result->bindParam(':login', $login, PDO::PARAM_STR);
  8.      $result->execute;
  9.  
  10.  
  11.    if ($result->num_rows > 0){
  12.    
  13.       } else {MessageSend(1, 'Данный логин уже занят.', Refferer());}
  14. }
  15.  
4. andrewkard - 11 Августа, 2017 - 10:16:00 - перейти к сообщению
andrewkard пишет:
$sth->execute();

Nizz пишет:
$result->execute;

Вывод всех ошибок включали?
5. Nizz - 11 Августа, 2017 - 12:03:32 - перейти к сообщению
Да, ошибка по не внимательности, execute(). не хватало скобочек. Все заработало. Мне с моей не внимательностью только и сайты писать.
(Добавление)
Спасибо вам за помощьandrewkard

 

Powered by ExBB FM 1.0 RC1