getMessage()); } } private static function queryDbConfig(array $base): array { $config = []; $dsn = sprintf('mysql:host=%s;port=%d;dbname=%s', $base['host'], $base['port'], $base['database'] ); $pdo = new PDO( $dsn, $base['username'], $base['password'], [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4' COLLATE 'utf8mb4_general_ci'", ] ); $table = self::TABLE_NAME; $sql = "SELECT `database`, `username`, `password`, `prefix`, `driver`, `host`,`port` FROM `{$table}` WHERE enabled = 1"; $stmt = $pdo->prepare($sql); $stmt->execute(); $tenants = $stmt->fetchAll(); foreach ($tenants as $tenant) { $config[$tenant['database']] = [ 'driver' => $tenant['driver'] ?? 'mysql', 'host' => $tenant['host'] ?? '127.0.0.1', 'port' => (int)$tenant['port'] ?? 3306, 'database' => $tenant['database'], 'username' => $tenant['username'], 'password' => $tenant['password'], 'charset' => 'utf8mb4', 'unix_socket' => $base['unix_socket'] ?? '', 'collation' => 'utf8mb4_general_ci', 'prefix' => $tenant['prefix'] ?? '', 'strict' => $base['strict'] ?? false, 'engine' => null, 'pool' => $base['pool'] ?? [], ]; } $pdo = null; return $config; } }