PHP OOP MySQL编程

12j*_*erk 7 php mysql sql oop

我是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
  }

}
?>
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果为对象的每一个方法创建单独的数据库链接是最好的方法吗?有没有更好或替代的方法来做到这一点?希望我已经解释得很好了.


以下是正确的吗?

$x = new Account("localhost", "root", "");
Run Code Online (Sandbox Code Playgroud)

-and将有自己的连接...然后在完成后关闭?

Cha*_*rry 10

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

代码示例:

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

$Account = new Account($connection);
Run Code Online (Sandbox Code Playgroud)

需要改变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
    }

}
Run Code Online (Sandbox Code Playgroud)

我还建议您查看有关选择MySQL APIphp.net文档.如果你真的想在PHP和MySQL上使用OOP,你需要交换到mysqli或者PDO你正在使用的API并不真正支持OOP接口.

  • @GabrielSantos不,我没有故意关闭它.如果有另一个对象需要使用该连接怎么办?然后我们必须再次打开连接.创建连接对象的代码应该负责关闭连接. (4认同)