![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
A ja mam taki problem.. mam stronkę, na której używam systemu newsow i komentarzy.. korzystam z biblioteki mysqli... mam plik php z funkcja lacz_bd() [zwraca obiekt
Kod $bd ] odpowiedzialną za ustanowienie połączenia z bazą właśnie za pomocą mysqli.. wszystko śmiga ładnie.. ale wymyśliłem sobie, żeby do komentarzy napisać osobny moduł, taki który mogliby wykorzystać inni użytkownicy.. tak więc logicznym jest także, aby ten moduł miał osobny plik php z funkcją lacz_bd_c() [zwraca obiekt Kod $bd_c ]... i teraz operacje dodawania/wyswietlania komentarzy nie działają, podobnie jak wszystkie inne zapytania na obiekcie Kod $bd_c .. wygląda to mniej więcej tak (kodu nie przytaczam ze względu na jego objętość): Kod <strona> lacz_bd(); operacje na obiekcie $bd //tu wszystko śmiga lacz_bd_c(); operacje na obiekcie $bd_c //tu właśnie pusto.. nic nie dodaje[insert], nic nie zwraca[select] itp $bd_c->close(); $bd->close(); </strona> taka modyfikacja także nic nie daje Kod <strona> lacz_bd(); operacje na obiekcie $bd //tu wszystko śmiga $bd->close(); lacz_bd_c(); operacje na obiekcie $bd_c //tu właśnie pusto.. nic nie dodaje[insert], nic nie zwraca[select] itp $bd_c->close(); </strona> odrazu moge napisać, że zapytania na obiekcie $bd jak i $bd_c są poprawne, gdyż wystarczy, że zostawię sam fragment kodu (czyli jedna funkcja łącząca z bazą na cały skrypt): Kod lacz_bd_c(); operacje na obiekcie $bd_c //teraz śmiga $bd_c->close(); i wszystko działa jak powinno.. to samo gdy w komentarzach zacznę odwoływać się do obiektu $bd zamiast tworzyć nowe połączenie, wtedy również bez zastrzeżeń.. wniosek: błąd tkwi w tym, że drugie połączenie coś knoci i na obiekcie przez niego zwracanym nie działają żadne zapytania do bazy danych.. miał ktoś kiedyś podobny problem?? używam krasnala, włączyłem php5.. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 97 Pomógł: 11 Dołączył: 2.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli do łączenia się używasz również oddzielnego obiektu to po prostu przerób go na Singleton.
Ew. połączenie przekazuj jako parametr, żeby nie łączyć się 2 razy. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
czyli chcesz powiedzieć, że nie można stworzyć dwóch lub więcej obiektów połączenia z mysql w jednym skrypcie.
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 97 Pomógł: 11 Dołączył: 2.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
szczerze mówiąc nigdy nie potrzebowałem więcej niż jednego połączenia, więc po prostu nie wiem
![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Możesz mieć tyle połączeń, ile wytrzymają zasoby i limity.
Pokaż lepiej kod tej lacz_db. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Najprawdopodobniej połączenie jest wywoływane tylko raz i dostaje swój identyfikator, ale ponowne jego wywołanie nie rozumie, że chcesz mieć połączenie osobne i próbuje przypisać mu to pierwsze. Sprawdź zresztą co Ci daje var_dump dla $bd i $bd_c. Możliwe, że gdzieś wali błąd przez próbę odwołania z tymi samymi danymi lub zamknięciem zmiennej $bd. Zdebuguj te zmienne...
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
trochę to nieciekawe, bo zamierzałem zbudować stronę ładując do niej kilka komponentów.. z czego każdy miał mieć swoje połączenie, z użytkownikiem z pewnymi przywilejami na określone tabele;/
Ten post edytował 14lukas14 13.08.2010, 12:27:59 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
przecież da się tworzyć kilka połączeń w skrypcie. Problem tylko jest jeden z tym. Liczba userow mających jednocześnie do bazy maleje do ilość_maksymalnych_połączeń/ilość_połączeń_na_skrypt
Zadaj sobie pytanie: "Czy ma to sens?" -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 13.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
var_dump dla $db
Kod object(mysqli)#1 (0) { } var_dump dla $db_c Kod NULL jakieś pomysły.. ![]() ![]() co do Twojego pytania thek.. nie o to chodzi.. po prostu mój skrypt ma być później wykorzystywany przez innych.. a jego instalacja i użytkowanie ma być najprostsze jak się tylko da.. więc ustanowienie nowego połączenia, na konkretnym użytkowniku jest mi tu niezbędne.. EDIT: naprawione.. okazało się że funkcja db_lacz_c() nie widzi tych globalnych zmiennych potrzebnych do zalogowania ;] dzieki za pomoc.. Ten post edytował 14lukas14 13.08.2010, 13:03:03 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 20.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Przy okazji tego tematu co by nowego nie zakladac - jaka jest praktyka tworzenia serwisow, ktore beda odwiedzane przez duza liczbe osob? Czy powinno sie polaczenie z baza zestawiac na poczatku np. index, na koncu rozlaczac, czy w kazdej funkcji gdzie jest kwerenda zestawiac polaczenie (czasami wiecej) i po jej wykonaniu rozlaczac ? I tak w skrypcie powiedzmy 5-10 razy na jedno wywolanie
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 07:29 |