Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: System logowania wyrzuca błędy.
Forum PHP.pl > Forum > PHP
Put3r
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?
Turson
Kod sam w sobie jest prawidłowy. Sprawdź co siedzi w $_SESSION['id']
Kshyhoo
  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. }
Turson
Ksyhoo, tak czy inaczej powinno działać bo sam sprawdzałem
Put3r
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.
Kshyhoo
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.
Turson
Zamiast dwóch funkcji zrób jedną, która pobierze wyniki, bo chyba to jest przyczyną problemów
Put3r
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ć.
Turson
Usuń @ przy zapytaniu a dodaj to na końcu gdzieś i zobacz czy wyrzuci błąd
  1. if(mysql_error()==true){
  2. }
Put3r
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\...\inc.php on line 18
Turson
  1. echo $_SESSION['id'];

na pewno daje integer?
Put3r
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.
com
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 wink.gif

musisz to przypisywać dopiero po zalogowaniu, bo dopiero wtedy nadajesz id jakoś wartość a tak ona nie istnieje wink.gif
Put3r
Jeżeli dobrze rozumiem to powinno być coś takiego?

  1. function row($sql)
  2. {
  3. if(!isset($_SESSION['id']))
  4. {
  5. }
  6. }
com
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 @ exclamation.gif
killzone
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.
Put3r
Dopiero zaczynam ogarniać podstawy php, klasy może sobie na razie odpuszczę 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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.