Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][MySql] unknown column in 'where clause'
Forum PHP.pl > Forum > Przedszkole
arkoslaw
Witam serdecznie, mam pewien problem wyswietleniem informacji o koncie dla zalogowanego użytkownika

  1. include("logowanie.php");
  2.  
  3. $query = mysql_query("SELECT * FROM `users` WHERE 'login'='".$_SESSION['user']."'");
  4. $result = mysql_query ($query) or die ("Wystapil blad: " . mysql_error ());
  5.  
  6. $tab=mysql_fetch_array($result);
  7.  
  8. while($tab = mysql_fetch_array($result))
  9. {

no i dalej jest wyswietlanie wynikow. Po wykonaniu tego zapytania wywala mi komunikat: unknown 'nazwa loginu' in where clause.

Kombinowalem z apostrofami i teraz wywala mi inny 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 'Resource id #7' at line 1".

Z tym unknown column to chyba dlatego, że jeśli sie nie da pojedynczego apostrofu to interpretuje to jako nazwe kolumny...no ale one sa, wiec nie wiem w czym rzecz. Miał ktoś taki problem?
marcio
Kod
'login'


Zamieni na:

Kod
login


LUB:

Kod
`login`


Spawnm
A co to ma wspólnego z OOP ?
Przenoszę.
arkoslaw
Niestety nic nie daje ta zmiana, a jeżeli zmienie troche inaczej apostrofy to pojawia się unknown, lub nie pojawia się nic w wyniku, to wtedy po wpisaniu echo $query; w wyniku jest "resource id #4" lub id #7.
thek
Jezu... a po co dwa razy wywoływać mysql_query?
Przecież pierwsze zwróci Ci wynik...
  1. $query = mysql_query("SELECT * FROM `users` WHERE 'login'='".$_SESSION['user']."'");

a drugie to tak jakbyś na wyniku jeszcze raz chciał zrobić wynik )
  1. $result = mysql_query ($query) or die ("Wystapil blad: " . mysql_error());

Z pierwszej wymienionej przeze mnie linijki usuń mysql_query a przejdzie Ci smile.gif

EDIT: Zwróciłeś uwagę, że jeden rekord pobierasz całkiem poza pętlą i zniknie Ci on podczas obróbki danych?
arkoslaw
Po zmianie na to co zaleciłeś niestety nic się nie wyświetla, natomiast po wpisaniau echo $query; wyskakuje:
  1. SELECT * FROM `users` WHERE login='hh'
czyli dobrze pobiera nazwe uzytkownika ale czemu je nie wyswietla?;/

Druga sprawa z tym rekordem, no właśnie obszuakałem się ale nic nie znalazłem na temat brakującego rekordu, jak to wydedukowałeś?biggrin.gif faktycznie nie wyświetla mi najstarszego rekordu a po dodaniu w zapytaniu DESC nie wyświetla najmłodszego...masz na to jakąś rade?
thek
;)Bo spojrzałem na Twój kod
  1. $query = "SELECT * FROM `users` WHERE 'login'='".$_SESSION['user']."'";// tu trzeba było usunąć mysql_query
  2. $result = mysql_query ($query) or die ("Wystapil blad: " . mysql_error ());
  3. $tab=mysql_fetch_array($result); //ta linijka kradnie Ci jeden rekord. Usuń ją
  4. while($tab = mysql_fetch_array($result))
  5. { //tutaj operujesz na rekordach z bazy

Tak naprawdę masz tylko jeden rekord usera zapewne, więc albo usuwasz pętlę while i zostawiasz linijkę jaką radziłem Ci usunąć, albo usuwasz wskazaną linię i operujesz w pętli (jeśli masz sytuację, że mogą być userzy o tym samym loginie).
To daje Ci dostęp do danych zaszytych w zmiennej tab, która trzyma Twoje informacje. Wyświetl je sobie przez print_r lub var_dump, a zobaczysz, że one istnieją.Możliwe, że źle się odnosisz do nich. Swoją drogą przed pętlą możesz sobie wyświetlić ilość wróconych rekordów to będziesz wiedział czy baza rzeczywiście Ci jakieś wyniki zwróciła. Jest gotowa funkcja by tę informację wyciągnąć ze zmiennej $result smile.gif
arkoslaw
Punkcik powędrował za pomoc przy znikającym rekordzie, teraz już działa, dzięki;) Jednak z wyświetlaniem informacji o zalogowanym userze nic nie pomogło:(

Dalem print_r($tab); ale bez zmian, a pozniej var_dump($tab); No i nic nie wyswietla...a jak wpisze wyzej echo $result; wyswietla sie "resource id #7" nie wiem moze to znaczy ze brakuje jkaiegos elementu, ale z tego co wiem to znaczy to tez ze jest polaczenie z baza...

Kurde uzywalem identycznej skladni w innym skrypcie i dzialalo, mam w indexie cos takeigo:
  1. include ("logowanie.php");
  2. echo "Jesteś zalogowany jako: ";
  3. echo ''.$_SESSION['user'].'<br>';


i to mi elegancko dziala, wiec może zamiast odwoływać sie do pliku z logowaniem to może można by pobrać login z pola jestes zalogowany jako...
Pozdrawiam i dzieki jeszcze raz za pomoc w usunięciu usterki z rekordami;)
thek
var_dump robisz dla $tab a nie $result. $result zwraca właśnie to resource_id, czyli wskaźnik na dane z bazy i to jest prawidłowe jego działanie, mówiące, że coś zwrócił. Gdyby było tam false, to znaczy, że wyskoczył błąd.
albo więc:
  1. $tab = mysql_fetch_array($result);
  2. var_dump($tab);
albo
  1. while($tab = mysql_fetch_array($result) ) {
  2. var_dump($tab);
  3. }
Nieprawidłowe jest natomiast var_dump($result), które próbujesz robić jak zgaduję smile.gif

A to z index Ci działa bo masz tam SESSION, a to kopletnie co innego niż dane z bazy smile.gif
arkoslaw
Napisałem, że dla $tab wpisywałem. var_dump i print_r nie dają żadnego wyniku, pusta strona bez żadnych błędów. Wcześniej coś mówiłeś jeszcze o jakimś myku, gotowej funkcji która to może wyciągnąć wyniki z $result;>
thek
Jeśli masz pustkę to sprawa prosta. Albo masz błąd na stronie i wyłączone raportowanie błędów co kończy się białą stroną albo w wyniku kompletnie nic nie dostajesz. Choć var_dump powinien z tego co kojarzę wyrzucić:
array( )
A ta "magiczna" funkcja to proste mysql_num_rows zwracająca liczbę wierszy wyniku. Chodziło mi o sprawdzenie ile Ci tych rekordów zwraca winksmiley.jpg Jesli 0 to znaczyło by że skopane zapytanie logicznie przez co brak pasujących rekordów.
arkoslaw
Heh dopiero teraz rozwiązałem ten problem podczas tworzenia innego zapytania, z pomocą kolegi;)

  1. $session = $_SESSION[user];
  2. $zapytaj = mysql_query("SELECT * FROM `users` WHERE `login`='$session'")
  3. or die ("Wystapil blad: " . mysql_error ());
  4.  
  5. $tab = mysql_fetch_row($zapytaj);


Wina lezala po stronie apostrofow, sama skladnia zapytania byla ok;)
marcio
Mysle ze jakbys przeczytaj dokladnie posty @thek'a i moj to problem bys dawno rozwiazal a nie po 1 miesiacu.
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.