Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak połączyć dwie tabelę z dwóch różnych baz
folik
post 23.10.2011, 12:16:25
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 11.10.2011

Ostrzeżenie: (0%)
-----


Witam,

Mam problem z połączeniem dwóch tabel z dwóch różnych baz na tym samym serwerze. Jeżeli chodzi o samo zapytanie MS_SQL to wiem jak powinno wyglądać. Ale nie wiem jak w PHP mam połączyć się do dwóch rożnych baz jednocześnie, o ile to w ogóle możliwe. Poniżej to co udało mi się do tej pory napisać:

  1. <?php
  2. // odbieramy dane z formularza
  3. $PinSN = $_POST['PinSN'];
  4.  
  5. //połączenie do bazy
  6. $serverName = "NazwaServera\nazwa";
  7. $connectionInfo = array( "Database"=>"ReportData");
  8. $conn = sqlsrv_connect( $serverName, $connectionInfo);
  9.  
  10. if( $conn === false ) {
  11. die( print_r( sqlsrv_errors(), true));
  12. }
  13.  
  14. //$connectionInfoCDB = array( "Database"=>"CDB"); <--- tutaj chciałbym się połączyć w zapytaniu $sql_select1
  15. //$connCDB = sqlsrv_connect( $serverName, $connectionInfoCDB );
  16. //if( $connCDB === false ) {
  17. // die( print_r( sqlsrv(), true));
  18. // }
  19.  
  20. //wyświetlanie tabeli
  21. $sql_select1 = "SELECT th.T [T], Tabela.S [S]
  22. FROM ReportData.dbo.TH as th
  23. inner join CDB.dbo.Tabela as Tabela on Tabela.T=th.T
  24. where th.PinSN='$PinSN'";
  25.  
  26. $stmt1 = sqlsrv_query( $conn, $sql_select1 );
  27. if( $stmt1 === false) {
  28. die( print_r( sqlsrv_errors(), true) );
  29. }
  30.  
  31. while( $row = sqlsrv_fetch_array( $stmt1, SQLSRV_FETCH_ASSOC) ) {
  32. echo $row['T'].", ".$row['S']."<br />";
  33. }
  34.  
  35. sqlsrv_free_stmt( $stmt1);
  36. ?>


Nikt nie odpowiedział, ale udało mi się to sprawdzić. I jak się okazało powyższy przykład był ok, tylko dane testowe były złe wink.gif.

Łącząc się do bazy X, można spokojnie korzystać z innych baz w obrębie tego samego serwera, wystarczy tylko użyć pełnej ścieżki, czyli <nazwa_bazy>.dbo.<nazwa_tabeli> Czyli w sumie jak w zwykłym MS_SQLu.

Pozdrawiam i Polecam
Piotr F.
Go to the top of the page
+Quote Post
trafas
post 4.06.2012, 20:30:39
Post #2





Grupa: Zarejestrowani
Postów: 87
Pomógł: 12
Dołączył: 31.05.2006

Ostrzeżenie: (0%)
-----


No niby wszystko ładnie pięknie, tylko problem może ci się pojawić, jeśli użytkownik na którego się logujesz na serwer ma uprawnienia do jednej bazy a do drugiej nie.
Go to the top of the page
+Quote Post
john_doe
post 11.06.2012, 16:05:03
Post #3





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


dokladnie. jeżeli natomiast mamy dwie bazy na dwóch różnych maszynach należy stworzyć LINKED SERVER
poczytaj o tym, prosta i fajna sprawa.

w skrócie na jednej instancji bazy tworzy LINKED SERVER który to wskazuje na baze na innej maszynie. Potem zwykły SELECT


Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 23:41