我有一个名为table()
的函数。
如果我已经在函数外部编写了PDO连接,我就无法通过PDO连接到数据库,如下所示:
include_once("server.inc");
$connect = new PDO('mysql:host='.$servername.'; dbname='.$db.';charset=utf8' , $username, $password);
function table()
{
$sql="select * FROM d1" ;
$result = $connect->query($sql) ;
foreach ($result as $rows )
{
echo $rows["Course_name"] . "<br/>" ;
}
}
echo table() ;
此代码不起作用并提供以下错误:
注意:未定义的变量:connect
致命错误:在非对象上调用成员函数query()
现在如果我使用这样的代码:
function table()
{
include_once("server.inc");
$connect = new PDO('mysql:host='.$servername.'; dbname='.$db.';charset=utf8' , $username, $password);
$sql="select * FROM d1" ;
$result = $connect->query($sql) ;
foreach ($result as $rows )
{
echo $rows["Course_name"] . "<br/>" ;
}
}
echo table() ;
一切都会好起来,但会发生另一个问题 - 我只能使用功能表()一次!如果我第二次使用它,则会发生此错误:
注意:未定义的变量:servername
注意:未定义的变量:db
注意:未定义的变量:用户名
注意:未定义的变量:密码
警告:为foreach()提供的参数无效
如何在不出错的情况下多次使用我的功能?
答案 0 :(得分:0)
您可以将PDO实例注入函数:
include_once("server.inc");
$connect = new PDO('mysql:host='.$servername.'; dbname='.$db.';charset=utf8' , $username, $password);
function table($connect)
{
$sql="select * FROM d1" ;
$result = $connect->query($sql) ;
foreach ($result as $rows )
{
echo $rows["Course_name"] . "<br/>" ;
}
}
//echo table() ;
// Thanks barmar, missed the param before editing!
table($connect); // there's no need to echo the function as it does not return any value,
// the function does the echoing