Php 使用自定义函数通过PDO连接到数据库

Php 使用自定义函数通过PDO连接到数据库,php,pdo,scope,database-connection,custom-function,Php,Pdo,Scope,Database Connection,Custom Function,我有一个函数叫做: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"

我有一个函数叫做: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() ;
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() ;
此代码不起作用,并出现以下错误:

注意:未定义变量:connect

致命错误:对非对象调用成员函数查询

现在,如果我使用这样的代码:

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() ;
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

注意:未定义变量:username

注意:未定义变量:password

警告:为foreach提供的参数无效


我该怎么做才能多次使用我的函数而不出错?

您可以将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
哦,你应该读一下,还有