За последние 24 часа нас посетил 49751 программист и 1732 робота. Сейчас ищут 643 программиста ...

PDO ошибка(помогите,пожалуйста :( )

Тема в разделе "PHP и базы данных", создана пользователем Elect, 6 сен 2015.

  1. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Первый раз решил использовать PDO и столкнулся с ошибкой
    Ошибка:Fatal error: Call to a member function query() on a non-object in...
    index.php
    Код (PHP):
    1. require('db.php');
    2. global $db;
    3. $stmt = $db->query('SELECT * from users');
    4. $rows = $stmt->fetchAll();
    5. $count = count($rows);
    6. foreach($rows as $row)
    7. {
    8. print_r($row);
    9. } 
    db.php
    Код (PHP):
    1. class db{
    2.     function __construct(){
    3.         try {
    4.             global $config;
    5.             $db = new PDO("mysql:host=".$config['db_host'].";dbname=".$config['db_name'], $config['db_user'], $config['db_pass']);
    6.             $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    7.             $db->exec("set names utf8");
    8.         }
    9.             catch(PDOException $e) {
    10.             echo $e->getMessage();
    11.         }
    12.     }
    13. }
    14.  
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    а перевод ошибки что говорит то???
     
  3. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Что не получилось найти функцию query,опять ты?)))
     
  4. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    что значить - опять ты ????
    я к этому ваще никакого отношения не имею... Твой код - сам виноват...
     
  5. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Ахах,вообще вернёмся к ошибке,я так понял,что он не видит функцию query,наверное потому что я не объявил класс,но я и так пытался,всё равно ошибка.
     
  6. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    а всё потому что не внимательно читаешь материал...
    объявил только тут переменную $db как глобал и всё... На этом думаешь хватит??
     
  7. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Я пробовал
    Код (Text):
    1. $db=new db;
    ошибка та же
     
  8. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    вот тебе мой совет - по видимому ты еще рано полез в ООП... Всё слил в один унитаз...
    Разберись с процедурным, потом уже мелкими шагами в ООП ;)
     
  9. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Ну а всётаки можно объяснить почему у меня эта ошибка?
     
  10. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    у $db нет такого метода query
     
  11. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Серьёзно?Не верю...
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну дык отладка типа переменной db что дает? или ты не умеешь отладку делать. смотри тебе уже не первый человек говорит что ты не готов к тому что ты делаешь. может уже тормознуть да правильной дорогой пойти?
     
  13. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Всё работает,если я в конструктере пишу запрос,в другом месте уже не работает
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    в каком конструкторе? :D
     
  15. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    В методе конструктор.

    Добавлено спустя 25 секунд:
    Объясните пожалуйста,как исправить.
     
  16. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    ты локально вызываешь $db в методе-конструкторе, вот поэтому там у тебя запрос и выполняется...
    но когда ты вызываешь $db за пределами своего класса - php начинает читать тебе натации Fatal error: Call to a member function query() on a non-object in...
     
  17. Elect

    Elect Новичок

    С нами с:
    4 авг 2015
    Сообщения:
    70
    Симпатии:
    0
    Ну а как это поправить?Я пытался объявлять класс.
     
  18. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    давай уже с самого начала мануал почитай а? ну реально. если такая каша на базисе то что ты потом будешь дальше-то делать?
     
  19. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    молодец что - пытался объявлять класс.... Но этих знаний в этом примере не достаточно пока...
    Исправить это можно только с полным пониманием - глобальные переменные, объекты класса, вызовы методов класса