2017-09-19 4 views
1

J'essaie de me connecter à un autre DB et insérer des données, les données sont correctement insérées dans la première DB, mais ne pas insérer dans la deuxième DB, tous les champs étant les mêmes dans les deux tableaux , le code ci-dessous ne pas insérer dans le latestdb, ci-dessous est mon code de modèle, je suis tout à fait sûr que le contrôleur et les vues sont bien, S'il vous plaît laissez-moi savoir si plus de détails sont nécessaires. J'utilise CodeIgniter 2. Le problème est après le commentaire // Insérer dans pr_usersse connecter à un autre db dans codeigniter et insérer

$this->db->$function($this->myTables['users'], $data); 
 
\t \t \t \t $db1['latestdb']['hostname'] = 'localhost'; 
 
\t \t \t \t $db1['latestdb']['username'] = 'root'; 
 
\t \t \t \t $db1['latestdb']['password'] = 'passw'; 
 
\t \t \t \t $db1['latestdb']['database'] = 'latestdb'; 
 
\t \t \t \t $db1['latestdb']['dbdriver'] = 'mysql'; 
 
\t \t \t \t $db1['latestdb']['dbprefix'] = ''; 
 
\t \t \t \t $db1['latestdb']['pconnect'] = TRUE; 
 
\t \t \t \t $db1['latestdb']['db_debug'] = TRUE; 
 
\t \t \t \t $db1['latestdb']['cache_on'] = FALSE; 
 
\t \t \t \t $db1['latestdb']['cachedir'] = ''; 
 
\t \t \t \t $db1['latestdb']['char_set'] = 'utf8'; 
 
\t \t \t \t $db1['latestdb']['dbcollat'] = 'utf8_general_ci'; 
 
\t \t \t \t $db1['latestdb']['swap_pre'] = ''; 
 
\t \t \t \t $db1['latestdb']['autoinit'] = TRUE; 
 
\t \t \t \t $db1['latestdb']['stricton'] = FALSE; 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t \t $DB2 = $this->load->database($db1, TRUE); 
 
\t \t \t \t $DB2->db_select('zipbizzlatestdb'); 
 
\t \t \t \t $DB2->$function($this->myTables['users'], $data); 
 

 
\t \t \t \t $DB2->insert('pr_users',$data);

Je reçois une erreur en disant:

Une erreur est survenue

Vous avez non sélectionné un type de base de données à connecter.

+0

Cocher cette [https://stackoverflow.com/questions/8268853/codeigniter-multiple-database-connections](https://stackoverflow.com/questions/8268853/codeigniter-multiple-database-connections) – siva

Répondre

1

Modifier

$DB2 = $this->load->database($db1); 

Pour

// TRUE parameter tells CI that you'd like to return the database object. 
$DB2 = $this->load->database($db1, TRUE); 

Notez également

Vous n'avez pas besoin de créer des configurations de base de données séparées si vous ne besoin d'utiliser une autre base de données sur la même connexion. Vous pouvez passer à une autre base de données lorsque vous devez, comme ceci:

$this->db->db_select('database2_name'); 

et

$this->$DB2->your_function(...) 

^ 
    Does not have any such property 

Pour

$DB2->your_function(..) 
+0

ne fonctionne pas, quelque chose ne va pas, la configuration de la base de données a déjà la configuration – sunshine

+0

@sunshine, un autre problème '$ DB2-> votre_fonction (..)' est correct, pas $ $ -> $ DB2-> votre_fonction (. –

+0

@sunshine voir la mise à jour –

0

Essayez dans votre Modal

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Test extends CI_Model { 

    function __construct() 
    { 
    parent::__construct(); 
    $this->another = $this->load->database("anotherdb",true); 
    } 

    function get() 
    { 
    $this->another->select("*"); 
    $this->another->from("admin"); 
    $query = $this->another->get(); 
    return $query->result(); 
    } 
} 
?>