[PHP] Po przenosinach skrypt sypie błędami |
[PHP] Po przenosinach skrypt sypie błędami |
29.03.2014, 22:13:21
Post
#1
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 29.03.2014 Ostrzeżenie: (0%) |
Witam serdecznie!
Swoją przygodę z php zacząłem kilka ładnych lat temu, początkowo działania na z phpBB by Przemo, Joomla! i inne takie Kilka razy przenosiłem fora internetowe znajomym, przeniosłem parę stron na World Pressie i jakoś zawsze udawało się rozwiązywać bezboleśnie pojawiające się problemy ale ostatnio stanąłem przed nowym wyzwaniem i walczę z tym za pomocą google'a i finalnie postanowiłem poszukać pomocy u ludzi którzy mają dużo większą wiedzę od mojej, jednakże przyznaję iż jestem bardzo cieńki w te klocki... Skrypt który przeniosłem działał bezawaryjnie na pewnym hostingu, jednakże zmuszony jestem go przenieść gdzieś indziej i o ile zaadoptowanie ścieżek konfiguracja bazy itd poszło bez żadnego problemu to na nowym hostingu skrypt zaczął sypać błędami pierwszy błąd: Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /public_html/obsluga/dziennik.php on line 60 Linie w pliku:
W lini 60 wg programu ezHtml znajduje się tylko znak ' { ' Myślałem że jest zbędny/błędnie użyty ale jak go usunąć to skrypt wykazuje inny błąd: Parse error: syntax error, unexpected '}' in /public_html/obsluga/krakow/dziennik.php on line 531
Czyli jest potrzebny Zatem pytanie gdzie to to kuleje ? Ten post edytował ericsson 29.03.2014, 22:14:13 |
|
|
29.03.2014, 22:33:27
Post
#2
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 89 Dołączył: 27.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
Tak, ten nawias jest dość istotny
Problem tkwi w linijce wcześniej, mianowicie a dokładniej w zmiennej $kabresult, która ma zapewne wartość FALSE, a powinna być zasobem (rezultatem wykonania zapytania do bazy danych). Wskazuje to na to, że jest jakiś problem z zapytaniem do bazy danych. Musisz więc znaleźć linijkę, gdzie do zmiennej $kabresult przypisywana jest wartość, prawdopodobnie będzie to coś w stylu: $kabresult = mysql_query("....."); i zaraz po tym wstaw coś takiego: i napisz co się wyświetliło. -------------------- Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
|
|
|
29.03.2014, 23:16:07
Post
#3
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 29.03.2014 Ostrzeżenie: (0%) |
Witaj!
Dziękuję serdecznie za odpowiedź.... przeszukałem skrypt przez Ctrl+F i w lini 45 mam coś takiego Po tym wstawiłem to co napisałeś i mi się rozjaśniło... Taa jestem głupek, no wstyd po całości Należy mi się tęgie lanie albo przynajmiej wiadro wody na głowę bo w swoich zapędach się zakręciłem że zapomniałem o najważniejszym... komunikat brzmiał: Tabela 'prefix_1234' nie istnieje ... siedzę nad tym kolejną noc z rzędu i po prostu zrobiłem, przeniosłem pliki, przepisałem konfigację w plikach, w cPanelu zrobiłem bazę więc skrypt nie pokazywał błędu w połączeniu więc myślałem że jest cacy a tu się okazuje że baza jest pusta jak nie powiem co.... No debil Jak słowo daję tak się zakręcić no wstyd i hańba I dzięki Twojej pomocy wyszło szydło z worka a ja siedzę jak głupek po nocach i szukam... O ile ruszyło to wysypuje się w kilku podstronach komunikat o treści: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in [i tu nazwy plików] czyli jakby ten sam typ błędu w różnych plikach no chyba że są ze soba powiązane... plik osoby.php błąd in line 104
ten sam błąd w pliku opalanie.php in line 87
No i cholera znów ten ' } ' ale tym razem baze mam wgraną Pozdrawiam serdecznie Ericsson Ten post edytował ericsson 29.03.2014, 23:19:04 |
|
|
29.03.2014, 23:56:07
Post
#4
|
|
Grupa: Zarejestrowani Postów: 292 Pomógł: 89 Dołączył: 27.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) |
Generalnie gdziekolwiek masz błąd o podobnej treści ("not a valid MySQL result resource") możesz się spodziewać, że błąd jest z zapytaniem. Więc jeśli nadasz masz jakiś problem, po prostu szukaj mysql_query() zwracającego problematyczny wynik (czyli FALSE, który miał być zasobem) i dodawaj po nim echo mysql_error(); i na podstawie tych informacji dostosowuj zapytania / strukturę bazy danych.
-------------------- Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
|
|
|
30.03.2014, 00:16:50
Post
#5
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 29.03.2014 Ostrzeżenie: (0%) |
OKi Dziękuję za cenną wskazówkę z tym echem Fajna sprawa
Więc w pliku: osoby.php po dodaniu tego echa mam komunikat: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group by uzytkownicy.id ORDER BY nazwisko ASC, imie ASC' at line 1 a w pliku: opalanie.php You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY data DESC, nazwisko ASC, imie ASC' at line 1 Czyli ten chyba ten sam błąd? Ogólnie skrypt ruszył i teoretycznie gra ale nie wiem jakie mogą być następstwa gdyby to zignorować.... ------------ Mały UP na ' starym ' hostingu w porównaniu do ' nowego ' są trochę inne wersje php oraz MySql'a ------------ Ten post edytował ericsson 30.03.2014, 00:22:49 |
|
|
30.03.2014, 00:53:26
Post
#6
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 7 Dołączył: 23.12.2005 Skąd: Wejherowo Ostrzeżenie: (0%) |
A co masz w zmiennej $this_k ?
Wygląda na to że problem właśnie w niej leży i przez to nie można zwrócić wyniku zapytania. |
|
|
30.03.2014, 01:02:29
Post
#7
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 29.03.2014 Ostrzeżenie: (0%) |
A co masz w zmiennej $this_k ?
Oj wprowadziłeś mnie w zakłopotanie... gdzie mam tego cuda szukać ? mały up.. wrzuciłem zapytanie do SQL o treści: string gettype ( mixed $this_k ) wróciło z komunikatem na czerwono #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'string gettype ( mixed $this_k )' at line 1 ale to chyba nie to co było potrzebne Ten post edytował ericsson 30.03.2014, 01:07:48 |
|
|
30.03.2014, 01:07:07
Post
#8
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 7 Dołączył: 23.12.2005 Skąd: Wejherowo Ostrzeżenie: (0%) |
|
|
|
30.03.2014, 01:11:14
Post
#9
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 29.03.2014 Ostrzeżenie: (0%) |
metodą prób i błędów... bo działam po omacku...
użycie var_dump($this_k); dało komunikat 'NULL' Ten post edytował ericsson 30.03.2014, 01:12:27 |
|
|
30.03.2014, 01:15:09
Post
#10
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 7 Dołączył: 23.12.2005 Skąd: Wejherowo Ostrzeżenie: (0%) |
No i tu właśnie leży problem. W skrócie wyszukujesz użytkowników z ID=NULL, a powinien tam być numer. Dlatego zapytanie jest błędne.
Musisz szukać zmiennej $this_k wcześniej w skrypcie i prześledzić skąd powinny brać się w niej dane i dlaczego nic nie jest do niej zapisywane. Naprawisz $this_k, to i zapytanie zacznie działać |
|
|
30.03.2014, 01:36:08
Post
#11
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 29.03.2014 Ostrzeżenie: (0%) |
OK jedziemy dalej
Wyszukujesz użytkowników z ID=NULL jasne .... czyli co domyślam się że... gdzieś ( w bazie ? ) znajduje się tabela ( z użytkownikami? ) w której jakiś wiersz ( w którym są wymienieni użytkownicy) ma ID=NULL Mam tego szukać w phpMyadmin jakoś W pliku osoby.php Zmienna $this_k występuje wcześniej w skrypcie w kilku miejscach
oraz linie
w drugim pliku który szwankuje opalanie.php
Widzę że w obu plikach stosowane są podobne fragmenty kodu.. |
|
|
30.03.2014, 01:45:16
Post
#12
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 7 Dołączył: 23.12.2005 Skąd: Wejherowo Ostrzeżenie: (0%) |
Wyszukujesz użytkowników z ID=NULL jasne .... czyli co domyślam się że... gdzieś ( w bazie ? ) znajduje się tabela ( z użytkownikami? ) w której jakiś wiersz ( w którym są wymienieni użytkownicy) ma ID=NULL Tak, tabela jest na pewno. Ale id zapewne musi być jakąś cyfrą, a nie NULL... ten NULL to właśnie błąd, bo to jest brak wartości. W pliku osoby.php Zmienna $this_k występuje wcześniej w skrypcie w kilku miejscach
No to teraz trzeba szukać dalej po sznureczku zmiennych Skąd się bierze $tresc[0], a konkretniej tablica $tresc oraz $K_ID. oraz linie
No to jest Twoje nie działające zapytanie. w drugim pliku który szwankuje ... Widzę że w obu plikach stosowane są podobne fragmenty kodu.. Naprawisz pierwszy plik, to drugi pójdzie tak samo. Chyba że zaraz okaże się że te zmienne są z innego pliku i wszystko naprawi się za jednym zamachem |
|
|
30.03.2014, 02:04:41
Post
#13
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 29.03.2014 Ostrzeżenie: (0%) |
Czyli jeżeli zrozumiałem dobrze to:
w phpMyAdmin wybrałem swoją bazę, następnie tabelę uzytkownicy i mi się wyświetliło ileś tam wpisów... i nawet jak zaznaczyłem żeby sortowało ID od 1 do końca to wychodzi na to że każdy wiersz (użytkownik) ma swoje ID określone numerem fakt że nie każde id ma kompletne pozostałe dane czasem brakuje imienia lub nazwiska... tego jest trochę ale można by na piechotę poszukać czy np. się numer nie dubluje jakiś ? Zagadka od Ciebie... Skąd się bierze $tresc[0], a konkretniej tablica $tresc oraz $K_ID. Tablica ? Bo tabeli '$tresc' nie ma w bazie zatem wnioskuję że nie tego szukamy zatem czego szukać? Ten post edytował ericsson 30.03.2014, 02:06:46 |
|
|
30.03.2014, 02:10:48
Post
#14
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 7 Dołączył: 23.12.2005 Skąd: Wejherowo Ostrzeżenie: (0%) |
Czyli jeżeli zrozumiałem dobrze to: w phpMyAdmin wybrałem swoją bazę, następnie tabelę uzytkownicy i mi się wyświetliło ileś tam wpisów... i nawet jak zaznaczyłem żeby sortowało ID od 1 do końca to wychodzi na to że każdy wiersz (użytkownik) ma swoje ID określone numerem fakt że nie każde id ma kompletne pozostałe dane czasem brakuje imienia lub nazwiska.. I tak i nie. Udowodniłeś sobie właśnie że jest błąd w php i MySQL nie ma tu nic do rzeczy i wiesz już na pewno, że zmienna $this_k powinna mieć wartość z przedziału 1 do obcnie maksymalnej wartości w bazie. Ale nie w bazie szukamy błędu w a skrypcie, więc zostaw phpmyadmina w spokoju i szukaj w kodzie. Zagadka od Ciebie... Skąd się bierze $tresc[0], a konkretniej tablica $tresc oraz $K_ID. Tablica ? Bo tabeli '$tresc' nie ma w bazie zatem wnioskuję że nie tego szukamy zatem czego szukać? Nie żadna tabela! Szukaj w skrypcie zmiennych $tresc i $K_ID. Trzeba ustalić skąd się mają brać ich wartości, bo z tego co podałeś to one są (w chwili obecnej) źródłem problemu i maja wartość NULL, a nie liczbową. Potem są tylko podstawiane do $this_k. |
|
|
30.03.2014, 15:12:26
Post
#15
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 29.03.2014 Ostrzeżenie: (0%) |
W związku z prowadzonymi pracami wykopaliskowymi znalazłem dość sporo wyników odnośnie zmiennej $tresc oraz zmiennej $K_ID ale jest tego tyle że w jednym poście się nie może zmieścić i muszę to rozbić na 2 posty:
Cześć 1 Plik export.php
Plik exporto.php
Plik karnety.php
i w tym samym pliku
Kolejny plik nazywa się karty.php i prócz powtarzających się zmiennych $tresc mam coś jeszcze...
Znalazłem coś jeszcze w tym pliku co rzuciło mi się w oczy choć nie wiem czy to to nie ma coś wspólnego bo miałem szukać $K_ID a mam fragment kodu który wygląda tak:
Zamiast zmiennej $K_ID mam $KID Czy duże i małe litery też mogą mieć wpływ czy są traktowane jednakowo? Ciąg dalszy... Plik klient.php
Plik konkurs.php pierwszy raz $k_id
Plik minuty.php
Plik opalanie.php zawiera i $tresc oraz $K_ID i $k_id
Plik osoby.php
i kawałek dalej znów
W przedostatnim pliku usluga-op.php zmienna $tresc się pojawia wiele razy wiecej niż w poprzednich plikach
Ostatni plik usluga-rez.php
|
|
|
30.03.2014, 15:23:07
Post
#16
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 7 Dołączył: 23.12.2005 Skąd: Wejherowo Ostrzeżenie: (0%) |
No dobra. Nawklejałeś tu kawałków kodu z miliona plików. A to nic nie daje.
Skupmy się na jednym pliku, tym o którym była mowa od początku, tam gdzie się wali zapytanie. Z tego co wkleiłeś jasno wynika że zmienna treść to wynik wcześniejszego zapytania do SQLa i w niej powinny być wyniki z bazy. Zacznijmy od sprawdzenia zapytania oraz tego czy nie ma błędu (masz napisane wcześniej jak to zrobić). Kolejnym krokiem będzie sprawdzenie zawartości tablicy $tresc pod kątem tego czy nie jest z jakiegoś powodu pusta lub czy wyniki w niej nie są w innej kolejności niż oczekujemy. |
|
|
30.03.2014, 16:04:25
Post
#17
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 29.03.2014 Ostrzeżenie: (0%) |
szlag by trafił tyle się naszukałem no ale trudno tak to jest jak się człowiek uczy Powiem Ci że ciut mi rosjaśniło się kilka rzeczy ale to tylko takie drobnostki
Zatem walczymy z pierwszym plikiem w którym się wysypało zapytanie.. Był to plik osoby.php który w lini 104 wysadzał błąd : mysql_num_rows(): supplied argument is not a valid MySQL result resource in ....
Zgodnie z postem usera 'vonski' z dziś z 00:56 ... Czyli sprawdzam zapytanie szukając przed linią 104 frazy: mysql_query i po niej dodaję echo mysql_error(); Jeżeli o to chodzi to to już zrobiłem i otrzymałem wynik: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group by uzytkownicy.id ORDER BY nazwisko ASC, imie ASC' at line 1 Uprzedzając następnego posta 'sprawdzenie zawartości tablicy '$tresc' zatem w pliku osoby.php znalazłem miejsce w którym pierwszy raz wystepuje zmienna $tresc i dodałem ten ' var_dump($tresc); ' i wynikiem jest komunikat NULL Ten post edytował ericsson 30.03.2014, 16:13:15 |
|
|
30.03.2014, 16:22:26
Post
#18
|
|
Grupa: Zarejestrowani Postów: 6 766 Pomógł: 1823 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Pytanie jakie padło wcześniej, a co masz w $this_k?
-------------------- |
|
|
30.03.2014, 16:35:39
Post
#19
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 7 Dołączył: 23.12.2005 Skąd: Wejherowo Ostrzeżenie: (0%) |
Uprzedzając następnego posta 'sprawdzenie zawartości tablicy '$tresc' zatem w pliku osoby.php znalazłem miejsce w którym pierwszy raz wystepuje zmienna $tresc i dodałem ten ' var_dump($tresc); ' i wynikiem jest komunikat NULL OK. Jak wygląda zapytanie do bazy oraz czy nie ma błędu? Cytat Pytanie jakie padło wcześniej, a co masz w $this_k? Już pisał wcześniej, że jest NULL. |
|
|
30.03.2014, 16:42:41
Post
#20
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 29.03.2014 Ostrzeżenie: (0%) |
Chyba chodzi Ci o to ? Panowie pełen szacunek dla Waszej cierpliwości i wyrozumiałości normalnie czuję się jak głupia blondynka której ktoś tłumaczy wymianę rozrządu w silniku V12 oraz z regulacją wszystkich 48 zaworów Ten post edytował ericsson 30.03.2014, 16:46:08 |
|
|
Wersja Lo-Fi | Aktualny czas: 3.06.2024 - 12:13 |