Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Pobieranie danych z bazy, Niby wszystko dobrze ale nie działa
Mamazur
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 3.07.2009

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


Chcę aby po zalogowaniu wyświetliło się "Jesteś zalogowany jako NAZWAUŻYTKOWNIKA"

Jednak w moim skrypcie logowania w bazie danych jest osobne pole login i osobne pole nick, więc
  1. $nick = $_POST['login'];
  2. $_SESSION['nick'] = $nick;
  3. echo "<br>Jesteś zalogowany jako ";
  4. echo $_SESSION['nick'];

nie wchodzi w grę. Nie mam też zamiaru zmieniać skryptu logowania, gdyż potrzebuję osobnego loginu i nicka. Robię więc tak
  1. $zap = "select nick from dane where login = '".$_POST["login"]."'";
  2. $dane = mysql_fetch_row(mysql_query($zap));
  3. $_SESSION['nick'] = $dane[0];
  4. echo $_SESSION['nick'];

tak naprawdę nie wiem dlaczego
  1. $dane[0]

jednak to nie działa. Oto fragment kodu źródłowego strony:
  1. <br>Jesteśœ zalogowany jako: //i nic nie ma
  2. <a href='index.php?tryb=index&wyloguj=1'>
  3. Wyloguj się</a>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
login powinien być unikalny, więc poco limit?
Po to, by nie przeszukiwał nadaremno całej tabeli po znalezieniu rekordu.No wiesz, potocznie mówią na to "optymalizacja" (IMG:style_emoticons/default/winksmiley.jpg)

Tak to można do usranej smierci tu pisac. Nie dziala, nie dziala. Moze byc podał wiecej informacji...
  1. $login=htmlspecialchars($_POST['login']);
  2. echo 'Login to:'.$login;
  3. $zap = mysql_query("select nick from dane where login ='$login'") or die(mysql_error());
  4. $dane = mysql_fetch_array($zap);
  5. echo 'Pobrane dane:';
  6. print_r($dane);
  7. $_SESSION['nick'] = $dane['nick'];
  8. echo $_SESSION['nick'];

Co ci wyswietla?
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(nospor @ 11.02.2010, 13:00:00 ) *
Po to, by nie przeszukiwał nadaremno całej tabeli po znalezieniu rekordu.No wiesz, potocznie mówią na to "optymalizacja" (IMG:style_emoticons/default/winksmiley.jpg)

Hmmm swego czasu zastanawiałem się jak działa LIMIT, szukałem, ale nie znalazłem odpowiedzi. Bo w zasadzie są 2 możliwości:

1. Pobiera rekordy aż do osiągnięcia LIMIT rekordów i przestaje dalej szukać.
2. Pobiera wszystkie rekordy i zwraca ich LIMIT.

Szczerze mówiąc nie wiem jak to faktycznie jest realizowane, ale skłaniałbym się raczej ku opcji 2. Dlaczego? Bo przecież można pobrać rekordy z określonym OFFSETem. Przyjmując pierwszy wariant działania klauzuli LIMIT ciężko mi sobie uzmysłowić jakby to miało działać - przecież jakoś trzeba określić próg początkowy zwracanych danych. Poza tym: co w sytuacji z użyciem sortowania? Czy byłaby możliwość pobrania X wierszy posortowanych malejąco po danej kolumnie bez wcześniejszego pobrania wszystkich rekordów? W to również wątpię. Tak więc wydaje mi się (ale to tylko moje gdybanie!), że LIMIT wycina określoną liczbę rekordów z wszystkich pobranych. Jeżeli faktycznie tak jest to dodanie LIMIT w tym konkretnym przypadku nie ma nic wspólnego z optymalizacją, a wręcz przeciwnie - niepotrzebnie tworzony jest narzut związany z koniecznością obcięcia zwracanego zbioru danych.

Może ktoś dysponuje w tej kwestii większą wiedzą - byłbym wdzięczny za podzielenie się nią.
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 10:36