Uwaga! Informacja powyżej jest niepełna. wywołanie connecta dla tych samych danych host, user pass zwróci ten sam identyfikator! To pułapka na jaką się nadziejesz niestety jeśli wywołasz kilkukrotnie connecta w obrębie jednego skryptu. Jeśli baza jest na tym samym hoście, to przed użyciem innej bazy
musisz zmienić ją funkcją zmiany bazy. To co postulujecie, czyli inne $db1 i $db2 dla mysql_query można użyć
tylko gdy funkcja connect dla obu połączeń zwraca inne identyfikatory. Da się to obejść na 2 sposoby:
1) jeśli znasz nazwę kanoniczną i IP serwera.
mysql_connect( 'host_jako_adres', 'user', 'pass')
mysql_connect( 'host_jako_IP', 'user', 'pass')
zwracają różne (!) identyfikatory połączenia, co można wykorzystać do łączenia się z 2 różnymi bazami na tym samym hoście, a to jest nieraz bardzo przydatne, jeśli user ma prawa do kilku baz. Kto nie wierzy niech sprawdzi:
a potem
Sam się kiedyś zdziwiłem, że pierwszy przykład wskazuje mi w obu przypadkach ten sam id połączenia. Wywołanie drugie mysql_connect dla tych samych danych host-user-pass po prostu zwraca nam ten te same identyfikatory i
nie tworzy nowego, przez co wywołanie zmiany bazy potrafi być nie do końca przewidywalne.
2) Użycie 4 parametru funkcji wymuszającego nowe połączenie zadziała. Ale 4 parametr jest ignorowany w "safe mode", więc jest kupa i trzeba używać mojego obejścia.
Wniosek? Znajomość nazwy hosta w formie IP i kanonicznej może być nieraz jedynym bezpiecznym rozwiązaniem jeśli nie znamy konfiguracji serwera a musimy nawiązywać połączenia do 2 baz na te same dane.