Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Tablice a pobieranie danych z bazy MySQL
Szprajcik
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 21.02.2010

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


Witam, raczkuję w PHP, więc szukam pomocy i tłumaczenia tutaj (IMG:style_emoticons/default/winksmiley.jpg)
Proszę raczej unikać zbyt fachowego nazewnictwa, bo po prostu mogę nie zrozumieć (IMG:style_emoticons/default/tongue.gif)


Ostatnimi czasy męczę się, żeby pobrać wyniki z bazy MySQL (3 pola, id, nick, mail) i sprawdzić, czy nie ma gdzieś pozycji o nicku np. "Nick".
Po pobraniu całej tabeli (* from tabela) zatrzymuję się, bo nie wiem jak to ogarnąć.

Która tablica jest najlepsza, na tego typu dane? fetch_array, row czy assoc? Jak właściwie działa asocjacyjna? (proszę na chłopski rozum, i wujek google i wiki posiada raczej trudne nazewnictwo i nie podają struktury budowy).

Z tym rodzi się kolejny problem. Jeśli już pobiorę tablicę z bazy, jak przejrzeć kolejne wyniki, lecąc od ID 1, do ID (np.) 20?
Z tego, co tłumaczył mi mój nauczyciel, wybrać pole można przez nazwa_tabeli[0], [1], lub [2], w moim przypadku, bo assoc podobno zwraca tablicę numeryczną. Jak w takim przypadku pobrać z pola nazwa_tabeli[0] wynik dla nicka o ID 2?

Dziękuję z góry za pomoc.
Proszę mnie tutaj nie karcić, bo to zniechęca (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kużdo
post
Post #2





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


Polecam Notepad++ bardzo ładnie koloruje składnię i ma wiele przydatnych funkcji, w tym pisanie w kilku liniach na raz, czy edycja kilku plików na raz...

Co do Twojego problemu... Zaczynając pisać zapytanie zaczynasz od czegoś takiego:
  1. $q = ("");

Wpisując kolejne polecenia wychodzi np. takie coś:
  1. $q = ("SELECT `nick` FROM `users` WHERE `id` = ... ");

Jak widzisz całe zapytanie jest objęte cudzysłowami " ", więc jeśli wystąpi w środku zapytania cudzysłów to kończy się jedna część zapytania. W tym przykładzie wszystkie zmienne umieszczane są w apostrofach, więc i zmienna w WHERE też powinna być umieszczona w apostrofach, czyli:
  1. $q = ("SELECT `nick` FROM `users` WHERE `id` = ``");

Umieszczając tam jakąś zmienną, możesz wpisać ją bezpośrednio, ponieważ zmienne w cudzysłowach "$zmienna" są zastępowane przez ich wartości. A całe zapytanie SQL jest umieszczone właśnie w cudzysłowach... Możesz także umieścić zmienną osobno łącząc ją z resztą zapytania, wtedy stosujesz kropkę... Więc są dwie możliwości:
Bezpośrednio:
  1. $q = ("SELECT `nick` FROM `users` WHERE `id` = `$zmienna`");

Z operatorem łączenia (.):
  1. $q = ("SELECT `nick` FROM `users` WHERE `id` = `".$zmienna."`");

Jak widzisz, w przypadku dodawania zmiennej przez kropkę, musisz zakończyć pierwszy ciąg, ale żeby $zmienna była dodana w apostrofach, musisz jeden umieścić przed zakończeniem ciągu, czyli piszesz `id` = `" (najpierw apostrof, żeby $zmienna była umieszczona w apostrofach, później cudzysłów, żeby zamknąć ciąg który zaczyna się od "SELECT), później wstawiasz zmienną przez operator łączenia czyli `id` = `".$zmienna i na koniec musisz dopisać jeszcze jeden ciąg, żeby zapytanie było kompletne. W tym drugim ciągu musi znaleźć się tylko apostrof który otacza zmienną chyba, że chcesz więcej parametrów to dopisujesz coś jeszcze... Czyli: `id` = `".$zmienna."`" Jak widzisz na końcu jest kropka, cudzysłów, apostrof i jeszcze raz cudzysłów. Kropka dodaje to co jest za nią do tego co jest przed nią, pierwszy cudzysłów otwiera ciąg, apostrof będzie interpretowany dosłownie, więc to on zostanie wklejony do całego zapytania i drugi cudzysłów zamykający ciąg. Całość otaczasz nawiasami a na końcu dajesz średnik:
  1. $q = ("SELECT `nick` FROM `users` WHERe `id` = `".$zmienna."`");
Go to the top of the page
+Quote Post

Posty w temacie
- Szprajcik   [PHP] Tablice a pobieranie danych z bazy MySQL   6.03.2010, 23:44:42
- - d3f3nd3r   Ale nie wyciąga się wszystkiego z bazy a potem za ...   6.03.2010, 23:54:32
- - MateuszScirka   [PHP] pobierz, plaintext $zapytanie = mysql_query...   6.03.2010, 23:56:02
- - Szprajcik   Aaa, rozumiem. Czyli nie przelatuję całej bazy z g...   7.03.2010, 00:01:13
- - d3f3nd3r   nie sprawdzasz czy jest taki nick a potem odpytuje...   7.03.2010, 00:13:38
- - MateuszScirka   (mysql_fetch_assoc) 1 fetch w while zapisuje wiers...   7.03.2010, 00:14:18
- - Szprajcik   Bardzo jasno, dziękuję uprzejmie . Ostatnie pytan...   7.03.2010, 00:22:28
- - MateuszScirka   Pewnie że się da, nawet więcej. Dużo o tym na GOO...   7.03.2010, 00:32:13
- - Szprajcik   Ok, poczytam, dziękuję bardzo za pomoc. Jednak Wa...   7.03.2010, 00:53:43
- - kuzdo   Sprawdź sobie to: Plik zapisz jako test.php: [PHP]...   7.03.2010, 00:59:05
- - Szprajcik   kuzdo, problem rozwiązał się przy zamianie assoc n...   7.03.2010, 01:00:48
- - kuzdo   Bo assoc to tablica asocjacyjna, gdzie komórki maj...   7.03.2010, 01:03:09
- - Szprajcik   [PHP] pobierz, plaintext $dodawanie = ('INSERT...   7.03.2010, 01:15:16
- - kuzdo   Jeżeli cały ciąg dajesz w " " to w środk...   7.03.2010, 01:25:43
- - Szprajcik   O, super, działa ładnie. Wtedy dodawało mi do bazy...   7.03.2010, 01:29:30
- - kuzdo   BTW. czy id jest auto_increment? Jeśli tak, to moż...   7.03.2010, 01:36:35
- - Szprajcik   tak, mam auto_increment Dziękuję Ci uprzejmie. T...   7.03.2010, 01:41:21
- - Walian   [PHP] pobierz, plaintext $dodaj_query = (...   7.03.2010, 01:54:07
- - kuzdo   Polecam Notepad++ bardzo ładnie koloruje składnię ...   7.03.2010, 11:59:02


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: 3.10.2025 - 08:54