Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách thiết lập kết nối PDO đúng cách

Mục tiêu

Như tôi thấy, mục tiêu của bạn trong trường hợp này gấp đôi:

  • tạo và duy trì một kết nối duy nhất / có thể tái sử dụng cho mỗi cơ sở dữ liệu
  • đảm bảo rằng kết nối đã được thiết lập đúng cách

Giải pháp

Tôi khuyên bạn nên sử dụng cả hàm ẩn danh và mẫu xuất xưởng để xử lý kết nối PDO. Việc sử dụng nó sẽ như thế này:

$provider = function()
{
    $instance = new PDO('mysql:......;charset=utf8', 'username', 'password');
    $instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $instance->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    return $instance;
};

$factory = new StructureFactory( $provider );

Sau đó, trong một tệp khác hoặc thấp hơn trong cùng một tệp:

$something = $factory->create('Something');
$foobar = $factory->create('Foobar');

Bản thân nhà máy sẽ trông giống như sau:

class StructureFactory
{
    protected $provider = null;
    protected $connection = null;

    public function __construct( callable $provider )
    {
        $this->provider = $provider;
    }

    public function create( $name)
    {
        if ( $this->connection === null )
        {
            $this->connection = call_user_func( $this->provider );
        }
        return new $name( $this->connection );
    }

}

Bằng cách này sẽ cho phép bạn có một cấu trúc tập trung, đảm bảo rằng kết nối chỉ được tạo khi được yêu cầu. Nó cũng sẽ làm cho quá trình kiểm tra đơn vị và bảo trì dễ dàng hơn nhiều.

Nhà cung cấp trong trường hợp này sẽ được tìm thấy ở đâu đó ở giai đoạn bootstrap. Cách tiếp cận này cũng sẽ cung cấp một vị trí rõ ràng để xác định cấu hình mà bạn sử dụng để kết nối với DB.

Hãy nhớ rằng đây là một ví dụ cực kỳ đơn giản . Bạn cũng có thể được lợi khi xem hai video sau:

Ngoài ra, tôi thực sự khuyên bạn nên đọc hướng dẫn thích hợp về việc sử dụng PDO (có một nhật ký hướng dẫn trực tuyến không tốt).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON mã hóa kết quả MySQL

  2. Ràng buộc KIỂM TRA trong MySQL không hoạt động

  3. Hàm chuỗi MySQL (Danh sách đầy đủ)

  4. Cách thực hiện xếp hạng theo nhóm trong MySQL

  5. Cách tính phần trăm hai cột trong MySQL