«Примечание: неопределенная переменная: db» при использовании PDO

В своем стремлении изучить PDO я написал этот код:

$sql = 'SELECT * FROM category ORDER BY order_cat DESC'; foreach ($db->query($sql) as $row) { echo "<input type='radio' name='category' value='$row[id]'>$row[name]<br />"; } 

Затем я инкапсулировал его в такую ​​функцию:

 function GetCategory() { $sql = 'SELECT * FROM category ORDER BY order_cat DESC'; foreach ($db->query($sql) as $row) { echo "<input type='radio' name='category' value='$row[id]'>$row[name]<br />"; } } 

Я называю это так:

 echo GetCategory(); 

Однако, когда я это делаю, я получаю следующие ошибки:

Примечание. Неопределенная переменная: db
Неустранимая ошибка: вызов функции-функции-члена query() для не-объекта

Я не знаю, чего мне не хватает; Я объявляю $db в файле конфигурации следующим образом:

 $db = new PDO("mysql:host=$localhost;dbname=$namedb;charset=utf8", $userdb, $passdb); 

Создайте глобальный $ db, когда вы находитесь внутри функции.

 function GetCategory() { global $db; ... } 

Если это было определено раньше, конечно …

Вам нужно либо передать $db в качестве параметра в GetCategory

 function GetCategory($db) { ... } 

или объявить его как глобальную переменную:

 function GetCategory($db) { global $db; ... } 

Параметры обычно предпочтительнее.

Объект $db не существует в контексте функции. Вы должны передать его функции как дополнительный параметр.

 function GetCategory($db) { $sql = 'SELECT * FROM category ORDER BY order_cat DESC'; foreach ($db->query($sql) as $row) { echo "<input type='radio' name='category' value='$row[id]'>$row[name]<br />"; } } 

И прочитайте в переменной области .