Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][MySql] unknown column in 'where clause'
arkoslaw
post 8.11.2009, 18:10:44
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 31.10.2009

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


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?

Ten post edytował arkoslaw 8.11.2009, 18:11:20
Go to the top of the page
+Quote Post
marcio
post 8.11.2009, 18:14:35
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Kod
'login'


Zamieni na:

Kod
login


LUB:

Kod
`login`




--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Spawnm
post 8.11.2009, 18:42:08
Post #3





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




A co to ma wspólnego z OOP ?
Przenoszę.
Go to the top of the page
+Quote Post
arkoslaw
post 8.11.2009, 19:40:24
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 31.10.2009

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


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.
Go to the top of the page
+Quote Post
thek
post 8.11.2009, 23:22:26
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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?

Ten post edytował thek 8.11.2009, 23:25:07


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
arkoslaw
post 8.11.2009, 23:56:49
Post #6





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 31.10.2009

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


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?
Go to the top of the page
+Quote Post
thek
post 9.11.2009, 00:17:55
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




;)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

Ten post edytował thek 9.11.2009, 00:27:27


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
arkoslaw
post 9.11.2009, 11:01:18
Post #8





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 31.10.2009

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


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;)
Go to the top of the page
+Quote Post
thek
post 9.11.2009, 15:00:14
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
arkoslaw
post 9.11.2009, 15:29:13
Post #10





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 31.10.2009

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


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;>
Go to the top of the page
+Quote Post
thek
post 9.11.2009, 16:08:07
Post #11





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.

Ten post edytował thek 9.11.2009, 16:10:25


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
arkoslaw
post 3.12.2009, 22:29:13
Post #12





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 31.10.2009

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


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;)
Go to the top of the page
+Quote Post
marcio
post 4.12.2009, 00:12:38
Post #13





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Mysle ze jakbys przeczytaj dokladnie posty @thek'a i moj to problem bys dawno rozwiazal a nie po 1 miesiacu.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:07