![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 17.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie. Mam pewien problem z połączeniem do dwóch różnych baz w jednym skrypcie. Posiadam dwie bazy mysql: 1sza jest na potrzeby portalu, a druga jest na potrzeby forum. Na portalu chciałbym wyświetlać 5 ostatnich tematów z forum, które pobieram za pomocą mysql_fetch_array właśnie z tej drugiej bazy (forum). Sam skrypt do wyciągania ostatnich tematów działa doskonale.
Problem pojawia się dopiero po zaincludowaniu pliku w skrypcie portalu (portal zbudowany przy uzyciu php/mysql/smarty) w nagłówku wywala coś takiego: Cytat Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\portal\class\x.db.class.php on line 100 To pewnie przez to, że includuje plik, który także łączy się z kompletnie inną bazą danych. Oto kod pliku, który includuje:
Proszę o pomoc i pozdrawiam. |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Pytanie najważniejsze... Czy połączenie jest to samo , bo to najważniejsze. To samo połączenie, to znaczy mające tego samego hosta, usera i password.
Jeśli tak, to masz problem z głowy. Wystarczy pomiędzy zapytaniami robić mysql_select_db i zmieniać bazy. Sytuacja się komplikuje nieco, gdy bazy są na innych hostach lub odwołujesz się do tego samego hosta ale różnymi userami. Należy bowiem wtedy przechowywać dwa identyfikatory połączeń. Robisz więc wtedy 2 lub więcej zmiennych przechowujących identyfikatory połączeń i w zalezności od tego do jakiej bazy robisz zapytanie, taki identyfikator posyłasz jako DRUGI, parametr funkcji mysql_query. Masz wtedy więc przykładową składnię taką: Pierwsze zapytanie poleci do 1 bazy, a drugie do drugiej. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 17.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za szybką odpowiedź. Bazy znajdują się na tym samym serwerze, jednak niestety dane dostępowe są różne i tak już musi pozostać. Zastosowałem się do Twojej rady. Zapytania odpowiedzialne za pobranie ostatnich tematów zostały skierowane do odpowiedniego id połączenia. Jednak całego szkieletu portalu nie ruszałem gdyż jest tam po prostu za dużo różnych połączeń. Na tą chwilę kod wygląda tak:
I niestety w dalszym ciągu u góry wywala: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\portal\class\x.db.class.php on line 100 Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\portal\class\x.db.class.php on line 100 Pomyślałem, że może pomoże zamknięcie tego połączenia zaraz po wyświetleniu tematów w ten sposób: Jednak błąd u góry w dalszym ciągu jest widoczny + po wyświetleniu tematów pojawił się nowy: Cytat Warning: mysql_close() expects parameter 1 to be resource, null given in C:\wamp\www\portal\tematy.php on line 11 Co zrobić z tym fantem? |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
To popatrz DO CZEGO, Ci się pluje skrypt. Do tego, że to co jest rzekomo wynikiem zapytania z mysql_query nie jest prawidłowe. Lepiej zerknij sobie co tam jest. I jeśli naprawdę musisz korzystać z 2 baz z różnymi danymi dostępowymi, to niestety ale bez wydzielenia w mysql_query owego drugiego parametru będziesz miał cały czas błedy, bo skrypt nie będzie mógł rozpoznać o jakie spośród dwoch połaczeń Ci chodzi i będzie ZAWSZE bral pod uwagę ostatnie nawiazane, bo tak jest domyślnie ustawione mysql_query. Gdy brak owego identyfikatora to uważa, że trzeba to zrobić w bazie, do której id_połączenia wywołano jako ostatnie. Life is brutal.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.09.2025 - 15:43 |