Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Połączyć się z dwiema różnymi bazami danych w PHP?

Krótka odpowiedź:Tak .

Długa odpowiedź:
Powinieneś upewnić się, że Twój kod zawsze używa identyfikatorów połączeń, aby uniknąć pomyłek i mieć czysty, czytelny kod. (Zwłaszcza, gdy łączysz się z obiema bazami danych za pomocą warstwy abstrakcji, takiej jak ODBC lub PDO)

Proszę zapoznać się z Podręcznikiem PHP dotyczącym PDO i zarządzania połączeniami

Przykład:

$link_mysql = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$link_msaccess = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\test.mdb");

// query MySQL DB
foreach($link_mysql->query('SELECT * FROM test') as $row) {
    print_r($row);
}

// query MS Access DB
foreach($link_msaccess->query('SELECT * FROM omg_its_access') as $row) {
    print_r($row);
}

Przykład bez PDO:

$link_mysql = mysql_connect("localhost", $user, $pass);
mysql_select_db("test", $link_mysql);

$link_msaccess = odbc_connect("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\test.mdb");

// you may omit the link identifier for MySQL, but i suggest to use it explicitly 
$res1 = mysql_query('SELECT * FROM test', $link_mysql);
while ($row = mysql_fetch_row($res1)) {
    print_r($row);
}
// for ODBC the link identifier is mandatory
$res2 = odbc_exec($link_msaccess, 'SELECT * FROM omg_its_access');
while ($row = odbc_fetch_row($res2)) {
    print_r($row);
}

Jak widać powyżej, kod dla dwóch sterowników baz danych różni się składnią - dlatego sugeruję użycie PDO.

PDO pozwoli uniknąć wielu kłopotów i znacznie ułatwi przejście na inny sterownik bazy danych, jeśli zdecydujesz się to zrobić później. Abstrahuje wszystkie sterowniki baz danych i daje prosty interfejs do obsługi ich wszystkich w tej samej składni.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zresetować hasło roota mysql?

  2. Jak wyłączyć i włączyć wszystkie ograniczenia w tabeli mysql, w tym. PK FK CHK UNI itp

  3. Dlaczego ładowanie obiektów SQLAlchemy za pośrednictwem ORM 5-8x jest wolniejsze niż wierszy za pomocą surowego kursora MySQLdb?

  4. Ograniczenie CHECK w MySQL nie działa

  5. Jak mogę wykonać logikę Boolean na dwóch kolumnach w MySQL?