За последние 24 часа нас посетили 23572 программиста и 1522 робота. Сейчас ищет 831 программист ...

PDO Error

Тема в разделе "PHP для новичков", создана пользователем ArsNet, 21 фев 2017.

  1. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Возможно у меня руки просто из ж....... растут, но тем не менее пытаюсь разобраться и прошу помощи. Так как 2-й день пытаюсь безуспешно бороться с данной проблемой.

    И так Db.php

    Код (Text):
    1.  
    2.  
    3. class Db{
    4.  
    5. public static function getConnection(){
    6.  
    7. $host = '127.0.0.1';
    8. $dbname = 'pamp';
    9. $user = 'root';
    10. $pass = '';
    11. $charset = 'utf8';
    12.  
    13. $db = new PDO("mysql:host=$host; dbname=$dbname;charset=$charset", $user, $pass);
    14. return $db;
    15. }
    16. }

    Потом в файле LoginController.php

    Код (Text):
    1. <?
    2. include_once ROOT.'/components/Db.php';
    3. class LoginController
    4. {
    5. public function action()
    6. {
    7. $login = $_POST['login'];
    8. $password = $_POST['password'];
    9.  
    10. $db = Db::getConnection();
    11.  
    12. $result = $db->query('SELECT * FROM users WHERE login='.$login');
    13. $result->setFetchMode(PDO::FETCH_ASSOC);
    14. $loginItem = $result->fetch();
    15. return $loginItem;
    16. }
    17. }
    18. ?>
    А это неразумное железо выдает мне ошибку:

    Fatall error: Call to a member function setFetchMode() on a non-object in .........................

    Братцы выручайте!!!
     
  2. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    PHP:
    1. $result = $db->query("SELECT * FROM users WHERE login='$login'");
     
    ArsNet нравится это.
  3. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    хм. Вроде сработало, но почему не сработал пред идущий вариант?
     
  4. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    1.Вместо двойных кавычек использовались одинарные(этого уже достаточно)
    2. Неправильная конкатенация.
    query возвращал false,отсюда ошибка.
     
    ArsNet нравится это.
  5. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Ага понятно, Спасибо. А теперь подскажи плиз как вывести полученный результат.
     
  6. ArsNet

    ArsNet Новичок

    С нами с:
    24 май 2016
    Сообщения:
    288
    Симпатии:
    24
    Адрес:
    Владивосток
    Все разобрался! Спасибо за помощь @alexblack