2010-11-26 6 views
1

J'ai deux types de base de données dans un serveur différent. Et est d'établir une connexion DB ci-dessous le script:connexion entre deux bases de données différentes

//DB 1 
define("DBNAME","xx.xxx.xx.xxx:D:\DATABASE\OCS DATA.FDB"); 
define("DBUSER","USER"); 
define("DBPASS","USER"); 
$dbh = ibase_connect(DBNAME,DBUSER,DBPASS) or die(_ERROR15.": ".ibase_errmsg()); 

//DB 2 
$dbc=mysql_connect(_SRV, _ACCID, _PWD) or die(_ERROR15.": ".mysql_error()); 
mysql_select_db("qdbase") or die(_ERROR17.": ".mysql_error()); 

à côté, j'ai une requête pour insérer des données dans un autre DB:

//if structure of the both tables are same then... 
$sql = "insert into database1.member select * from database2.member"; 

//if structure of both tables are not same then 
$sql = "Insert into database1.member select columnname1,columnname2 ". 
     "from database2.member"; 

si cette requête peut être utilisée pour la condition comme ci-dessus, qui ont deux types de DB différents? si c'est le cas, quelle partie doit être changée?


while ($ibase_row = ibase_fetch_assoc($rResult)){ 
    $ins = array(); 
    foreach ($ibase_row as $col => $val){ 
    $ins[$col] = mysql_real_escape_string($val); 
    } 

    $mysql_insert = "INSERT INTO qdbase.table SET ".implode(',', $ins); 
    $res = mysql_query($mysql_insert, $dbc) or die(); 
} 
+0

Vous pouvez utiliser une couche d'abstraction de base de données comme Zend_Db, elle fait partie de [Zend Framework] (http://www.zendframework.com). – Phliplip

Répondre

0

Il y a une chance que vos systèmes de base de données fction "dblink". Si cela est disponible, vous pouvez lier le mysql à Firebird ou vice versa et lancer le script depuis l'un d'entre eux.

+0

aime comment? un exemple? – klox

+0

En utilisant un dblink, vous pouvez travailler sur un db distant comme sur votre dbink actuel. Cela fonctionne typiquement dans Oracle. Mysql ne le supporte pas. Je ne sais pas si Firefox le fait. – Massimog

Questions connexes