Если вы объявили / установили $db
в глобальной области (или в любой области, кроме функции / метода) и попытались использовать ее в функции / методе, она не будет работать. Читать это .
Если объект PDO не был создан или не был установлен до вызова метода, вы также можете получить эту ошибку. Попробуйте var_dump(is_object($db));
и / или var_dump($db);
проверить.
Вам необходимо выполнить одно из следующих действий:
Создание объекта PDO внутри метода (возможно, не практичный или лучший вариант):
function foo () {
$db = new PDO( ... );
...
$query = $db->query( ... );
}
Создание объекта PDO в глобальной области и использование ключевого слова global
для его импорта в метод:
$db = new PDO( ... );
function foo () {
global $db;
$query = $db->query( ... );
}
Создание объекта PDO в глобальной области и использование суперглобального массива $GLOBALS
для доступа к нему.
$db = new PDO( ... );
function foo () {
$query = $GLOBALS['db']->query( ... );
}
Создайте экземпляр объекта PDO в глобальной области и передайте его в качестве параметра вашему методу.
$db = new PDO( ... );
function foo ($db) {
$query = $db->query( ... );
}
foo($db);
Создайте объект PDO в глобальной области видимости и передайте его в качестве свойства.
$db = new PDO( ... );
class foo {
public $db;
public function bar ($db) {
$query = $this->db->query( ... );
}
}
$foo = new foo;
$foo->db = $db;
$foo->bar($db);