![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 173 Pomógł: 1 Dołączył: 26.10.2005 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Witam,
od kilku godzin borykam się z pewnym problemem, mam takie oto dwie funkcje: pierwsza, odpowiedzialna ogólnie za umieszczanie danych w bazie:
i druga, która odpowiada za tworzenie nowego działu w drzewie menu:
teraz sprawa rozbija się o nieszczęsne mysql_insert_id(); z przedostatniej linijki drugiej funkcji. gdy nie mam tego polecenia, wszystko działa jak należy, natomiast w momencie utworzenia polecenia jak wyżej (return mysql_insert_id(); - chcialbym poznać ID ostatniego umieszczonego w bazie rekordu) serwer atakuje mnie błędami: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\d4y\__admind4y\inc\config.php on line 153 i Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\d4y\__admind4y\inc\config.php on line 220 co ciekawsze linie 153 i 220 nie dotyczą żadnej z powyższych funkcji!! linia 153 to inaczej linia 10 z poniższej funkcji
a linia 220 to inaczej linia 38 z poniższej funkcji:
nie mam bladego pojęcia co jest nie tak, szukam przyczyny już kilka godzin :/ =================================================== edit: znalazłem przyczynę, tylko niech mi ktoś teraz wytłumaczy dlaczego... wystarczyło przesunąć odblokowanie tabeli przed instrukcję mysql_insert_id() w funkcji createNode(); niestety mysql_insert_id() zwraca 0 mimo prawidłowego wykonania funkcji queryInsert() Ten post edytował siutek 29.12.2012, 23:30:13 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 24 Dołączył: 21.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Argument return:
Wartości zwracane są przy użyciu opcjonalnego wyrażenia return. Wszystkie typy mogą być zwracane, łącznie z tablicami i obiektami. Powoduje to natychmiastowe zakończenie wykonywania funkcji i wznowienie wykonywania skryptu od linijki w której funkcja została wywołana. Powinno pomóc przypisanie mysql_insert_id() do zmiennej po wywołaniu zapytania, nastepnie odblokowanie i return. Przeczytaj sobie jeszcze to: mysql_insert_id() zwraca ID wygenerowane dla pola z własnością AUTO_INCREMENT. Funkcja zwróci ID wygenerowane automatycznie przez ostatnią operację INSERT używającą podanego identyfikatora_połączenia. Jeżeli identyfikator_połączenia nie został podany, wykorzystywane jest ostatnio otwarte połączenie. mysql_insert_id() zwróci 0 jeśli ostatnie zapytanie nie generowało wartości AUTO_INCREMENT. Jeśli chcesz przechować zwrócony przez tę funkcję wynik, upewnij się, że wywołujesz ją zaraz po zapytaniu generującym nową wartość. Notatka: Funkcja MySQL LAST_INSERT_ID() zawsze zawiera ostatnio wygenerowane ID, a zwracana wartośc nie jest czyszczona pomiędzy kolejnymi zapytaniami. źródło algorytmy.pl |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 173 Pomógł: 1 Dołączył: 26.10.2005 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
faktycznie Twoja kolejność pomogła, mam zarówno mysql_insert_id() jak i brak jakichkolwiek błędów.
Dzięki! swoja droga, na chłopski rozum, skoro funkcja CreateNode została przerwana w lini gdzie pojawiło się return, tym samym tabele NIGDY nie zostały odblokowane, bo funkcja odblokowująca była za return, stąd Warningi?? dobrze rozumuję? Ten post edytował siutek 29.12.2012, 23:59:25 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 24 Dołączył: 21.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dobrze rozumujesz. Argument return powoduje zakonczenie funkcji.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 08:33 |