php从函数内部访问db类

时间:2013-02-22 15:11:16

标签: php class function pdo

我的数据库类运行正常,我称之为$db = new Database('user', 'pass', 'db', 'host');。我在我的脚本之上我定义了这个数据库,但是后来在脚本中我试图在函数内部使用连接,但似乎$db不是全局的,所以我的函数无法访问它。我可以在我的脚本中的每个函数内创建一个新的数据库类连接,但我真的想访问$db作为全局访问点。

以下是一些代码:

 require_once('database_class.php');

 $db = new Database('user', 'pass', 'db', 'host');



 // I can reach the $db here and make the $db->PDO->'statement'();



 function userExists($user) {

     $bool = false;

     // But in here I can't access $db...
     $query = $db->PDO->query('SELECT * FROM login WHERE username = "$user"');

     $result = $query->fetch();

     if ($result) {

         // User exists
         $bool = true;

     }

     return $bool;

 }

3 个答案:

答案 0 :(得分:1)

将全局$ db放在函数的开头,如下所示:

 function userExists($user) {
      global $db;

     // Rest of code here

函数中的变量仅在PHP中默认存在于本地。要使用在函数外部声明的未作为参数传递的变量(例如$ user),您需要使用如上所示的全局变量。

答案 1 :(得分:1)

您可能只需修改函数即可将$ db var作为参数。例如:

function userExists($user, $db) {
    ...
}

默认情况下,对象通过引用传递(请参阅here),这样您就不会在每次调用时无意中复制$ db对象。

答案 2 :(得分:0)

我也使用类进行连接和查询。但是,在您的类中已经定义了连接所需的变量将有所帮助,因此您不必在每个代码页中重复它们。 也许这个?使用db作为参数。

function userExists($ user,$ db){// codecodecode}