首页 > 解决方案 > PHP:在类内使用 DB 连接

问题描述

我正在从 PHP5.6 更新到 PHP7.0,这不再起作用:

$con=mysqli_connect(DATABASE_SERVER,DATABASE_USER,DATABASE_PASSWORD) or die(DATABASE_ERROR);
mysqli_select_db($con, DATABASE_NAME) or die(DATABASE_ERROR);

class DoSomeStuff()

{

    function GetSomeDate()
    {
    $result=mysqli_query($con, "SELECT * FROM my_table");
    }

}

看起来 $con 变量在类中不可用。

我必须这样做吗?

global $con=mysqli_connect()

谢谢!

标签: phpmysqliphp-7

解决方案


使用的主要模式类似于将数据库连接传递给构造函数(依赖注入),然后将其存储在实例变量中($this->con在本例中)。然后稍后的数据库调用仅$this->con用于数据库连接......

$con=mysqli_connect(DATABASE_SERVER,DATABASE_USER,DATABASE_PASSWORD) or die(DATABASE_ERROR);
mysqli_select_db($con, DATABASE_NAME) or die(DATABASE_ERROR);

class DoSomeStuff
{
    private $con;

    // Create instance with connection
    public function __construct( $con )  {
        // Store connection in instance for later use
        $this->con = $con;
    }
    public function doSomething() {
        // Run query using stored database connection
        $result=mysqli_query($this->con, "SELECT * FROM my_table");
    }

}

// Create instance, passing in connection
$some = new DoSomeStuff ($con);
$some->doSomething();

推荐阅读