В своем стремлении изучить 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 />"; } }
И прочитайте в переменной области .