Multiple database management and access control of PHP database connections
Overview: In actual development work, we often need to connect and operate multiple databases. As a popular back-end development language, PHP provides multiple ways to manage and access multiple databases. This article will introduce how to perform connection management and access control of multiple databases in PHP, and provide corresponding code examples.
I. Database connection configuration
In PHP, we can use the PDO (PHP Data Object) extension to connect and operate the database. First, we need to configure the connection information of each database in the code, including database type, host name, database name, user name and password. The following is an example of a configuration file:
// 数据库1的配置 $db1_config = array( 'type' => 'mysql', 'host' => 'localhost', 'database' => 'db1', 'username' => 'user1', 'password' => 'pass1' ); // 数据库2的配置 $db2_config = array( 'type' => 'mysql', 'host' => 'localhost', 'database' => 'db2', 'username' => 'user2', 'password' => 'pass2' );
II. Encapsulation of database connection
Next, we can encapsulate a simple database connection class for connecting and operating the database. This class can accept a database configuration array and create a database connection based on the configuration information. The following is a simple encapsulation example:
class Database { private $pdo; public function __construct($db_config) { $dsn = $db_config['type'] . ':host=' . $db_config['host'] . ';dbname=' . $db_config['database']; $username = $db_config['username']; $password = $db_config['password']; $this->pdo = new PDO($dsn, $username, $password); $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } // 执行SQL语句 public function query($sql) { return $this->pdo->query($sql); } // 插入数据 public function insert($table, $data) { // 省略插入数据的代码 } // 更新数据 public function update($table, $data, $where) { // 省略更新数据的代码 } // 删除数据 public function delete($table, $where) { // 省略删除数据的代码 } // 关闭数据库连接 public function close() { $this->pdo = null; } }
III. Multi-database management and access control
In actual applications, we may need to connect and operate multiple databases at the same time. In order to facilitate management and access, we can encapsulate a database management class to manage multiple database connections and operations. The following is an example of a simple database management class:
class DatabaseManager { private $databases; public function __construct() { $this->databases = array(); } // 添加数据库连接 public function addDatabase($name, $db_config) { $database = new Database($db_config); $this->databases[$name] = $database; } // 获取数据库连接 public function getDatabase($name) { if (isset($this->databases[$name])) { return $this->databases[$name]; } return null; } // 关闭所有数据库连接 public function closeAll() { foreach ($this->databases as $database) { $database->close(); } } }
Usage example:
// 创建数据库管理对象 $databaseManager = new DatabaseManager(); // 添加数据库连接 $databaseManager->addDatabase('db1', $db1_config); $databaseManager->addDatabase('db2', $db2_config); // 获取数据库连接 $db1 = $databaseManager->getDatabase('db1'); $db2 = $databaseManager->getDatabase('db2'); // 使用数据库连接执行操作 $result1 = $db1->query('SELECT * FROM table1'); $result2 = $db2->query('SELECT * FROM table1'); // 关闭所有数据库连接 $databaseManager->closeAll();
Summary: In PHP, we can use PDO extensions to connect and operate multiple databases. By encapsulating database connection classes and database management classes, multiple databases can be easily managed and accessed. At the same time, we can also perform access control on database connections based on actual needs to protect the security of the database.
Reference materials:
The above is the detailed content of Multi-repository management and access control of PHP database connection. For more information, please follow other related articles on the PHP Chinese website!