小编典典

PHP OOP MySQL编程

sql

我是PHP编程的初学者,并且希望获得有关一个​​小问题的帮助。请看下面的代码:


PHP代码

<?php
class Account
{
  public function register()
  {
    $db_link = mysql_connect("localhost","root","");  // Create Connection
    if (!$db_link)  // Check connection
    {
      die(mysql_error());
    }

    mysql_close($db_link); // Close Connection
  }

  public function login()
  {
    $con = mysql_connect("localhost","root","")  // create connection
    if (!$con)  // create connection
    {
      die(mysql_error());
    }
    mysql_close($con); //close connection
  }

}
?>

我的问题是,为对象的每个方法创建单独的数据库链接是否是最好的方法?有更好的方法或替代方法吗?希望我已经解释得足够好了。


以下内容正确吗?

$x = new Account("localhost", "root", "");

-和x将有自己的连接…然后在完成后关闭?


阅读 157

收藏
2021-04-22

共1个答案

小编典典

我不建议以这种方式创建数据库连接。创建一个连接,并使用该连接将其注入到对象中。您不需要为每个对象创建一个新的连接。

代码示例:

$connection = new mysqli('localhost', 'user', 'password');

$Account = new Account($connection);

将需要更改Account为如下所示:

class Account {

    protected $connection;

    public function __construct(mysqli $connection) {
        $this->connection = $connection;
    }

    public function register() {
        // use $this->connection for db
    }

    public function login() {
        // use $this->connection for db
    }

}

我还建议您看看有关选择MySQL
API
php.net文档。如果您真的想将OOP与PHP和MySQL一起使用,则需要交换mysqliPDO使用的API并不真正支持OOP接口。

2021-04-22