在我学习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);
答案 0 :(得分:3)
您需要将$db
作为参数传递给GetCategory
function GetCategory($db) {
...
}
或将其声明为全局变量:
function GetCategory($db) {
global $db;
...
}
通常更喜欢参数。
答案 1 :(得分:1)
$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 />";
}
}
并阅读variable scope。
答案 2 :(得分:0)
在函数内部使$ db全局化。
function GetCategory()
{
global $db;
...
}
如果之前已经定义了......