使用PHP访问函数中的数据库变量

时间:2010-02-24 20:12:34

标签: php mysql mysqli

我对PHP很新,我发现很多函数都需要访问数据库。问题是我目前在每个页面顶部需要的文件中连接到数据库,如下所示:

$db = new mysqli("localhost", "my_user", "my_password", "world");

我发现的问题是,当我想在一个函数中访问它时,我必须将$ db变量传递给它...这样可以正常工作,但有更简单的方法吗?

3 个答案:

答案 0 :(得分:0)

您可以将它们称为$db对象上的函数,例如$db->query(...)

答案 1 :(得分:0)

看看doctrine。有一点上升,但它非常好。

否则将该代码放入包含文件中,并将include "db.php";放入您的网页中。您最好有1个包含文件,可以为您提供网站所需的一切,并在那里添加$db代码。

如果你真的想要快速而又肮脏,请将$db设为全局,然后您可以随时随地访问它。这不是很好的编码实践。

答案 2 :(得分:0)

最简单(但不是最好)的方法是在每个函数中添加“global”关键字。例如:

$db = new mysqli("localhost", "my_user", "my_password", "world");
function foo() {
  global $db;
  $db->query(....
}

更好的方法是创建自己的类My_DB并将其定义为单例。然后,您将能够将db对象作为My_DB的实例调用。

class My_DB {
  protected $_db = null;

  protected static $instance = null;

  protected function __construct() {
    $this->_db = new mysqli("localhost", "my_user", "my_password", "world");
  }

  public static function getInstance() {
    if (empty(self::$_instance)) {
      self::$_instance = new self();
    }
    return self::$_instance;
  }
}

然后在代码中的任何位置执行以下操作:

function foo() {
  $db = My_DB::getInstance();
  $db->query(....
}