Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> System logowania wyrzuca błędy., mysql_fetch_assoc(): supplied argument is not a valid MySQL result res
Put3r
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.12.2013

Ostrzeżenie: (0%)
-----


Witam.
Na początku powinienem przeprosić za temat. Jest nieprecyzyjny, ale nawet nie wiem w czym leży problem.
Gdy tworzyłem strone, a dokładnie system logowania, w trakcie testowania skryptów coś się stało i teraz cały czas wyskakuje mi błąd:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\...\inc.php on line 12
Nie wiem czy problem leży po stronie bazy danych, czy coś z sesją się popsuło.

Kod do pliku inc.php:
  1. <?php
  2. mysql_connect('localhost','root','') or die(mysql_error());
  3. function vtxt($var)
  4. {
  5. }
  6. function row($sql)
  7. {
  8. }
  9.  
  10. function getUser($id)
  11. {
  12. return row("SELECT * FROM user WHERE id=$id");
  13. }
  14. $user = getUser($_SESSION['id']);
  15. ?>


Jeżeli natomiast usunę linijkę 19:
  1. $user = getUser($_SESSION['id']);
to wszystko działa dobrze. Szukałem rozwiązania w google ale nie znalazłem sensownej pomocy w tym problemi. Czytałem gdzies w necie, że z czasem powinno samo zacząć działać.

Czy jest jakiś sposób na szybkie rozwiązanie tego problemu?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Kod sam w sobie jest prawidłowy. Sprawdź co siedzi w $_SESSION['id']
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




  1. function getUser($id)
  2. {
  3. return row("SELECT * FROM user WHERE id=$id");
  4. }

I subtelna różnica:
  1. function getUser($id)
  2. {
  3. return row("SELECT * FROM user WHERE id='$id'");
  4. }
Go to the top of the page
+Quote Post
Turson
post
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Ksyhoo, tak czy inaczej powinno działać bo sam sprawdzałem
Go to the top of the page
+Quote Post
Put3r
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.12.2013

Ostrzeżenie: (0%)
-----


Udało się. Dodałem @ i działa:
  1. function row($sql)
  2. {
  3. }


a to '$id' i działa bez tego tez.

Tak czy inaczej @ chyba usówa błędy więc, chyba to nie załatwiło prawdziwego problemu, tylko go ukryło. Tak mi się wydaje.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #6





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat(Put3r @ 26.12.2013, 14:19:40 ) *
Tak czy inaczej @ chyba usówa błędy więc, chyba to nie załatwiło prawdziwego problemu, tylko go ukryło. Tak mi się wydaje.

Nie usuwa, tylko maskuje. Błąd jest nadal.
Go to the top of the page
+Quote Post
Turson
post
Post #7





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Zamiast dwóch funkcji zrób jedną, która pobierze wyniki, bo chyba to jest przyczyną problemów

Ten post edytował Turson 26.12.2013, 15:10:54
Go to the top of the page
+Quote Post
Put3r
post
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.12.2013

Ostrzeżenie: (0%)
-----


Zamiast których dwóch funkcji? Bo każda u mnie służy co czego innego i nie wiem które mógł bym scalić.
Go to the top of the page
+Quote Post
Turson
post
Post #9





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Usuń @ przy zapytaniu a dodaj to na końcu gdzieś i zobacz czy wyrzuci błąd
  1. if(mysql_error()==true){
  2. }
Go to the top of the page
+Quote Post
Put3r
post
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.12.2013

Ostrzeżenie: (0%)
-----


Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\...\inc.php on line 18
Go to the top of the page
+Quote Post
Turson
post
Post #11





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


  1. echo $_SESSION['id'];

na pewno daje integer?
Go to the top of the page
+Quote Post
Put3r
post
Post #12





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.12.2013

Ostrzeżenie: (0%)
-----


Raczej tak - zwraca id użytkownika.

Na wypadek dodałem jeszcze if by to sprawdzić:
echo $_SESSION['id'];
if(!ctype_digit($_SESSION['id'])) echo 'to nie liczba<br>';

Zauważyłem, że błąd wyskakuje tylko jak jestem niezalogowany.
Go to the top of the page
+Quote Post
com
post
Post #13





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


no bo pewnie wtedy $_SESSION['id'] jest null

a odnośnie
http://forum.php.pl/index.php?s=&showt...t&p=1082181
To on ma w "" wiec '' niczego tam nie zmienia bo mysql jest na tyle idioto odporne że dla inta dla niego to bez znaczenia (IMG:style_emoticons/default/wink.gif)

musisz to przypisywać dopiero po zalogowaniu, bo dopiero wtedy nadajesz id jakoś wartość a tak ona nie istnieje (IMG:style_emoticons/default/wink.gif)

Ten post edytował com 27.12.2013, 20:03:06
Go to the top of the page
+Quote Post
Put3r
post
Post #14





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.12.2013

Ostrzeżenie: (0%)
-----


Jeżeli dobrze rozumiem to powinno być coś takiego?

  1. function row($sql)
  2. {
  3. if(!isset($_SESSION['id']))
  4. {
  5. }
  6. }
Go to the top of the page
+Quote Post
com
post
Post #15





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


nie to co zrobiłeś nie ma sensu bo nic nie wnosi...

  1. $user = getUser($_SESSION['id']);

daj dopiero po zalogowaniu

i nie wygłuszał tych błędów @ (IMG:style_emoticons/default/exclamation.gif)
Go to the top of the page
+Quote Post
killzone
post
Post #16





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 14.04.2010

Ostrzeżenie: (0%)
-----


Taka mała uwaga:

  1. mysql_connect('localhost','root','') or die(mysql_error());


http://www.php.net/manual/en/class.mysqli.php

Tak na przyszłość to lepiej używać klasy mysqli do zarządzania bazą.
A twoje komendy stracą wspracie.
Go to the top of the page
+Quote Post
Put3r
post
Post #17





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.12.2013

Ostrzeżenie: (0%)
-----


Dopiero zaczynam ogarniać podstawy php, klasy może sobie na razie odpuszczę (IMG:style_emoticons/default/smile.gif) Kupie jakąś książkę do php, zeby ogarnąć podstawy i potem się za to zabiorę. Bo ciężko tak z manuala słabo ogarniająć język, nauczyć się obsługi baz.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 09:10