Codeigniter - Conexion dinamica Codeigniter- BD SQL

 
Vista:
sin imagen de perfil
Val: 1
Ha mantenido su posición en Codeigniter (en relación al último mes)
Gráfica de Codeigniter

Conexion dinamica Codeigniter- BD SQL

Publicado por Jesús (1 intervención) el 08/08/2019 16:37:17
Buenos Días!

Tengo una duda sobre como realizar una conexión a sql mediante codeigniter.

Supongamos que tengo una base de datos local a la cual codeigniter ya se conecta para realizar consultas, dentro de esa base de datos tengo una tabla llamada servidores, contiene datos de servidores, como dirección ip,nombre del usuario, contraseña de usuario, nombre de la base de datos etc.

Lo que quiero hacer es extraer esos datos mediante la conexión que ya tengo localmente, para después traerlos como variables php y usarlos para realizar otra conexión (dentro del archivo 'database.php' de codeigniter).
Para así en lugar de poner otra conexión manual, la haga dinamicamente extrayendo los datos de la bd local.

Espero me puedan ayudar, de antemano gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Establecer una conexión dinámica a la base de datos desde tabla de configuración

Publicado por Alejandro (44 intervenciones) el 01/09/2023 23:49:25
Para lograr lo que deseas, puedes seguir estos pasos en CodeIgniter para obtener los datos de conexión a la base de datos desde una tabla en tu base de datos local y utilizarlos para establecer una segunda conexión dinámica. Aquí está el proceso:

Paso 1: Obtener los datos de conexión de la tabla 'servidores'



Primero, necesitas crear un modelo que te permita obtener los datos de conexión desde la tabla 'servidores' en tu base de datos local. Vamos a asumir que ya tienes un modelo llamado 'Servidores_model' creado en CodeIgniter para interactuar con esta tabla. Si aún no lo tienes, puedes crearlo de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// En tu modelo 'Servidores_model.php' dentro de la carpeta 'models':
class Servidores_model extends CI_Model {
    public function obtenerDatosServidor($idServidor) {
        $this->db->select('ip, usuario, contrasena, nombre_base_datos');
        $this->db->where('id', $idServidor); // Suponiendo que tienes un campo 'id' para identificar servidores
        $query = $this->db->get('servidores');
 
        if ($query->num_rows() > 0) {
            return $query->row();
        } else {
            return false;
        }
    }
}

Este modelo te permite obtener los datos de conexión de un servidor específico basado en su 'id'.

Paso 2: Usar los datos de conexión para establecer una segunda conexión



En tu controlador o en cualquier lugar donde necesites establecer la segunda conexión a la base de datos, puedes hacer lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// En tu controlador u otro lugar apropiado:
$idServidor = 1; // Aquí establece el 'id' del servidor que deseas utilizar
 
// Carga el modelo de servidores
$this->load->model('Servidores_model');
 
// Obtén los datos del servidor desde la tabla 'servidores'
$datosServidor = $this->Servidores_model->obtenerDatosServidor($idServidor);
 
if ($datosServidor) {
    // Configura la segunda conexión a la base de datos dinámicamente
    $config['hostname'] = $datosServidor->ip;
    $config['username'] = $datosServidor->usuario;
    $config['password'] = $datosServidor->contrasena;
    $config['database'] = $datosServidor->nombre_base_datos;
    $config['dbdriver'] = 'mysqli'; // Ajusta el controlador de la base de datos según tu entorno
 
    // Carga la segunda base de datos con la configuración dinámica
    $this->load->database($config, FALSE, 'segunda_db'); // 'segunda_db' es el nombre de la segunda conexión
 
    // Ahora puedes usar la segunda conexión en tus consultas
    $this->segunda_db->select('*')->from('tabla_segunda_db');
    $query = $this->segunda_db->get();
 
    // Procesa los resultados
    foreach ($query->result() as $row) {
        // Tu lógica aquí
    }
} else {
    // No se encontraron datos del servidor, maneja el error
}

En este ejemplo, primero obtienes los datos de conexión del servidor desde la tabla 'servidores' utilizando el modelo 'Servidores_model'. Luego, configuras la segunda conexión a la base de datos dinámicamente con esos datos y la cargas con `$this->load->database()`. Después de eso, puedes utilizar la segunda conexión (`$this->segunda_db`) para realizar consultas.

Asegúrate de ajustar los nombres de las tablas y los campos según tu estructura de base de datos real, y de que los datos de conexión se obtengan correctamente de la tabla 'servidores'. Este enfoque te permitirá gestionar dinámicamente múltiples conexiones a bases de datos utilizando los datos almacenados en tu base de datos local.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar