Skocz do zawartości
Kaz

MySQL - poradnik.

Rekomendowane odpowiedzi

Słaby poradnik prawie żadna funkcja nie jest opisana co i dlaczego tak jest.

Kłania się język angielski. :P

 

Prosze wytłumaczyć mi co to znaczy, bo kompletnie nie jest wyjaśnione:

if (mysql_num_rows() && mysql_fetch_row(buffer, "|"))

mysql_num_rows = pobiera liczbę rekordów z zapytania

mysql_fetch_row = zapisuje do bufora toteż stringa w PAWN i dzieli dane poprzez separator w tym wypadku | czyli przykładowe dane wyglądałyby mniej więcej tak:

0|nick|haslo|cos
Edytowane przez FJT

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

I tak większość się domyśliłem ale tego jakoś nie dałem rady ;d

To też jest ważne że w normalnej postaci dane wyglądały by tak jak napisałeś, zabrakło tego w poradniku.

Jeśli tutaj:

mysql_num_rows() 

W argumencie tej funkcji nic nie damy to pobierze wszystkie rekordy?

Czy dobrze rozumiem?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Brakuje mi tu jeszcze jak stworzyć jedno (kolejne) pole do tabeli.

ALTER TABLE jakas_tabela ADD COLUMN nazwa_kolumn typ

// przyklad
ALTER TABLE table ADD COLUMN nickname varchar(24) not null

Jeśli tutaj:

mysql_num_rows() 
W argumencie tej funkcji nic nie damy to pobierze wszystkie rekordy?

Czy dobrze rozumiem?

Nie, nie wszystkie. Masz przykładowo zapytanie typu:

SELECT nickname FROM users WHERE password = 'haslo'; - nie jest zastosowany limit, bo gdy jesli damy np. limit 1 to ograniczy nam do jednego rekordu
Tak wiec, gdy uzyjesz mysql_num_rows pobierze Ci wszystkie rekordy w postaci liczbowej jakie zwraca nam kolumna password - czyli ilosc rekordow z tym samym haslem.

Przypominam, ze mysql_num_rows nie przyjmuje zadnych argumentow prócz handle połączenia, domyślnie jest na 0 wiec nie należy się tym martwić. :)

Edytowane przez FJT

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dobra teraz jasne, jeszcze słówko o tym:

mysql_fetch_row(buffer, "|"))

1: To zwróci true kiedy także odnajdzie jakieś pasujące rekordy tak?

2: Jeżeli w drugim argumencie w miejsce "" nic nie damy to jak będą wyglądały pobrane dane?

3: Czy można w miejsce " " dać spacje i wtedy też zadziała i za pomocą sscanf podzielić je?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dobra teraz jasne, jeszcze słówko o tym:

mysql_fetch_row(buffer, "|"))
1: To zwróci true kiedy także odnajdzie jakieś pasujące rekordy tak?

2: Jeżeli w drugim argumencie w miejsce "" nic nie damy to jak będą wyglądały pobrane dane?

3: Czy można w miejsce " " dać spacje i wtedy też zadziała i za pomocą sscanf podzielić je?

1) Funkcja mysql_fetch_row zwróci true, jeżeli prawidłowo dane z zapytania skopiują się do stringa, tutaj - buffer.

2) Dane będą wyglądać tak:

0nickpasswordcos
3) Tak, ale podzielenie danych przez sscanfa wygląda tak:

sscanf(buffer,"ds[rozmiar]s[rozmiar]s[rozmiar]", tutaj_zmienne); // bez stosowania p<>
Edytowane przez FJT

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Cały przykład: 

new buffer[127], playerNick[MAX_PLAYER_NAME];
GetPlayerName(playerid, playerNick, MAX_PLAYER_NAME);
mysql_real_escape_string(playerNick, playerNick); // sprawdzamy, czy nie ma zadnych podejrzanych znakow, ktore moga naszej bazie zaszkodzic
format(buffer, 127, "SELECT lata, punkty FROM NBA WHERE imie='%s'", playerNick);
if (mysql_query(buffer)) mysql_ping(); // Ta linijka pozwoli nam podtrzymać nasze połączenie
mysql_store_result(); // zapisujemy do pamięci
if (mysql_num_rows() && mysql_fetch_row(buffer, "|"))
{
new lata, punkty;
sscanf(buffer, "<p>dd", lata, punkty);

Malinowy, wiem że takie coś p<znakrozdzielający> istnieje, ale w tym przykładzie o który mi chodziło było takie coś:

<p>

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Cool.

 

Niestety ale poradnik nie jest najlepszy. Jakbym był w tym nowy nic bym się nie dowiedział. Prawie nic nie jest opisane, wyjaśnione. Popracuj nad tym.

 

Wydaje mi się, że należysz do tych leniwych, którzy chcą mieć wszystko podane na tacy i nie lubią zdobywać wiedzę, aby samodzielnie myśleć i potrafić wykonać pewną czynność. :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×