Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Blad z zapytaniem
viamarimar
post
Post #1





Grupa: Zarejestrowani
Postów: 303
Pomógł: 1
Dołączył: 24.09.2011

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


Mam w bazie 9 uzytkownikow.
Gdy pisze takie zapytanie, zwraca mi 9 czyli liczbe jaka chce

  1. SELECT * FROM users


  1. $result = mysql_query("SELECT * FROM users") or die('Błąd zapytania');
  2. $zarejestrowani = mysql_num_rows($result);


Jednak teoretycznie to powinno wygladac tak, ale wtedy zwraca jeden rekord, dlaczego?
  1. SELECT COUNT( * ) FROM users


  1. $result = mysql_query("SELECT COUNT( * ) FROM users") or die('Błąd zapytania');
  2. $zarejestrowani = mysql_num_rows($result);


Wywolanie:

  1. echo " <fieldset>
  2. <legend>Użytkownikcy:</legend>
  3. W portalu jest zarejestrowanych ". $zarejestrowani ." uzytkownikow
  4. </fieldset>";


Dodatkowo dodam ze w phpmyadmin oba zapytania zwracaja po 9 rekordow (co jest dziwne, ze pozniej juz jest tylko jeden) tylko pierwsze wyrzuca wszystkie dane
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
ShaggyAG
post
Post #2





Grupa: Zarejestrowani
Postów: 111
Pomógł: 11
Dołączył: 12.10.2014
Skąd: Tarnów

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


Cytat
Jednak teoretycznie to powinno wygladac tak, ale wtedy zwraca jeden rekord, dlaczego?

Zwraca jeden ale jego wartości to 9.
count oznacza liczyć więc Ci policzyło (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
viamarimar
post
Post #3





Grupa: Zarejestrowani
Postów: 303
Pomógł: 1
Dołączył: 24.09.2011

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


ahhh no tak (IMG:style_emoticons/default/haha.gif)

no dobra a co z tym

  1. $result4 = mysql_query("SELECT `datarejestracji` FROM `users` ORDER BY `datarejestracji` DESC LIMIT 1") or die('Błąd zapytania');
  2. $data = mysql_num_rows($result4);


w phpmyadmin zwraca date a w kodzie na stronie 1 teraz juz sie gubie czemu tak i jak przerobic te zapytania bo chce najnowsza date z bazy, w sensie ostatnie zarejestrowanie przechowywane w tabeli users.
Go to the top of the page
+Quote Post
johny_s
post
Post #4





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


Może jednak się pofatyguj i zerknij w manualu do czego służy funkcja mysql_num_rows
Go to the top of the page
+Quote Post
ilidir
post
Post #5





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


mysql_num_rows to polecenie najczęściej stosuje się do sprawdzenia czy rekord ktory wywołujesz poleceniem SQL istnieje czy tez nie.
Go to the top of the page
+Quote Post
Szymciosek
post
Post #6





Grupa: Zarejestrowani
Postów: 1 168
Pomógł: 126
Dołączył: 5.02.2010
Skąd: Świdnica

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


Bardziej chodziło żeby się dowiedział co zwraca http://php.net/manual/en/function.mysql-num-rows.php

po przeczytaniu tego będziecie wiedzieli co to wykonuje, co zwraca, a jak się wczytacie dalej, to na pewno dojdziecie do tego jak wyciągnąć rzeczywiste dane z bazy.
Go to the top of the page
+Quote Post
viamarimar
post
Post #7





Grupa: Zarejestrowani
Postów: 303
Pomógł: 1
Dołączył: 24.09.2011

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


tylko jak uzyje bez tego, zalozmy tak:
  1. $result4 = mysql_query("SELECT `datarejestracji` FROM `users` ORDER BY `datarejestracji` DESC LIMIT 1") or die('Błąd zapytania');
  2. $data = ($result4);

to wywala :
  1. Resource id #14
Go to the top of the page
+Quote Post
zidek
post
Post #8





Grupa: Nieautoryzowani
Postów: 50
Pomógł: 2
Dołączył: 28.05.2013

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


mysql_fetch_array
Go to the top of the page
+Quote Post
viamarimar
post
Post #9





Grupa: Zarejestrowani
Postów: 303
Pomógł: 1
Dołączył: 24.09.2011

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


  1. $result4 = mysql_query("SELECT * FROM `users` ORDER BY `datarejestracji` DESC LIMIT 1") or die('Błąd zapytania');
  2. $data = mysql_fetch_array($result4);


przy czyms takim zwraca
Array?

tesotwalem to wczesniej ale nie wiem jak to obejsc

Ten post edytował viamarimar 16.11.2014, 13:16:36
Go to the top of the page
+Quote Post
jan127
post
Post #10





Grupa: Zarejestrowani
Postów: 4
Pomógł: 2
Dołączył: 16.11.2014

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


Przykład użycia:

  1. $result4 = mysql_query("SELECT * FROM `users` ORDER BY `datarejestracji` DESC LIMIT 1") or die('Błąd zapytania');
  2.  
  3. while ($row = mysql_fetch_array($result4, MYSQL_ASSOC)) {
  4. echo "data rejestracji: " . $row["datarejestracji"]);
  5. }


Ten post edytował jan127 16.11.2014, 13:28:10
Go to the top of the page
+Quote Post
viamarimar
post
Post #11





Grupa: Zarejestrowani
Postów: 303
Pomógł: 1
Dołączył: 24.09.2011

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


znalazlem takie cos, ale w zaden sposob nie moge dopasowac tego pod siebie:

  1. $wynik = mysql_query ("SELECT * FROM zmarly WHERE id='$nr'");
  2. if ($rekord = mysql_fetch_array ($wynik)) {
  3. if (!empty($rekord[4])) echo 'Data powstania: '.date("d-m-Y", strtotime($rekord[4]));
  4. }


ja chce wynik koncowy w jednej zmiennej wyswietlac

//to twoje nie zwraca nic, niby czytajac to co w manualu wydaje sie ok wiec jest jakis powod

Ten post edytował viamarimar 16.11.2014, 13:40:56
Go to the top of the page
+Quote Post
jan127
post
Post #12





Grupa: Zarejestrowani
Postów: 4
Pomógł: 2
Dołączył: 16.11.2014

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


nie zauważyłem nawiasu w kodzie, już poprawiłem:

  1. while ($row = mysql_fetch_array($result4, MYSQL_ASSOC)) {
  2. echo "data rejestracji: " . $row["datarejestracji"];
  3. }


Ten post edytował jan127 16.11.2014, 13:56:13
Go to the top of the page
+Quote Post
viamarimar
post
Post #13





Grupa: Zarejestrowani
Postów: 303
Pomógł: 1
Dołączył: 24.09.2011

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


  1. $result4 = mysql_query("SELECT * FROM `users` ORDER BY `datarejestracji` DESC LIMIT 1 ") or die('Błąd zapytania'); //nie pokazuje nic
  2.  
  3. while ($row = mysql_fetch_array($result4, MYSQL_ASSOC)) {
  4. echo "<p>Ostatni użytkownik zarejestrował się <strong>". $row['datarejestracji'] ."</strong></p>";
  5. }



  1. $result4 = mysql_query("SELECT * FROM `users` ORDER BY `datarejestracji` DESC LIMIT 2 ") or die('Błąd zapytania'); // dziala dobrze
  2.  
  3. while ($row = mysql_fetch_array($result4, MYSQL_ASSOC)) {
  4. echo "<p>Ostatni użytkownik zarejestrował się <strong>". $row['datarejestracji'] ."</strong></p>";
  5. }

juz niby dziala, ale powiedzcie mi jeszcze dlaczego tak jest? o co chodzi z tym limitem

//te twoje bledy sam poprawilem, blad byl z tym limitem ale o co w nim chodzi to nie mam pojecia

Ten post edytował viamarimar 16.11.2014, 13:59:44
Go to the top of the page
+Quote Post
jan127
post
Post #14





Grupa: Zarejestrowani
Postów: 4
Pomógł: 2
Dołączył: 16.11.2014

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


Nie wiąż błędu z limitem, ponieważ określa ile tak naprawdę chcesz wierszy wyświetlić w zapytaniu. Proponuję przeczytać manual o mysql
Go to the top of the page
+Quote Post
viamarimar
post
Post #15





Grupa: Zarejestrowani
Postów: 303
Pomógł: 1
Dołączył: 24.09.2011

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


no niby tak ale w takim razie czemu jak :
1. nie robie limitu zwraca wszystko z bazy czyli tam okolo 20 rek
2. limit 1 - nie zwraca nic
3. limit 2 - zwraca to o co chodzi
4. limit 3 - nie zwraca
5. limi 4 -zwraca ?
itd... pewnie przez to mialem wczesniej problem tez jak kombinowalem cokolwiek

tak czy siak dzieki za pomoc..

Ten post edytował viamarimar 16.11.2014, 14:12:12
Go to the top of the page
+Quote Post
jan127
post
Post #16





Grupa: Zarejestrowani
Postów: 4
Pomógł: 2
Dołączył: 16.11.2014

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


W twoim wcześniejszym kodzie występował warunek if zamiast while dlatego domyślnie pobierał tylko jeden wiersz z zapytania.

Po za tym był jeszcze warunek if (!empty($rekord[4])) który sprawdzał czy wartość tablicy nie jest pusta jeśli tak nic nie wyświetlało jeśli nie podawało datę

Ten post edytował jan127 16.11.2014, 14:29:10
Go to the top of the page
+Quote Post
viamarimar
post
Post #17





Grupa: Zarejestrowani
Postów: 303
Pomógł: 1
Dołączył: 24.09.2011

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


ten if byl z jakiegos kodu z neta dla przykladu zeby sklicic cos co zadziala
Mniejsza juz o tamto.
  1. $zapytanie="INSERT INTO `news` (`id`,`login`,`data`,`tytul`,`tresc`)
  2. VALUES ('','".$_POST['login']."',".$_POST['data'].",".$_POST['tytul'].",".$_POST['tresc'].")";
  3. mysql_query($zapytanie) or die(mysql_error());


Czy tu ktos widzi jakas literowke,czy cokolwiek?
  1. 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 ',)' at line 2


Ten post edytował viamarimar 16.11.2014, 15:22:02
Go to the top of the page
+Quote Post
johny_s
post
Post #18





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


Wyechuj sobie zapytanie a nie traktuj forum jak parser,
skad mamy wiedziec co masz w tych zmiennych, pewnie brakuje apostrofów przy data, tytul, tresc
Go to the top of the page
+Quote Post
viamarimar
post
Post #19





Grupa: Zarejestrowani
Postów: 303
Pomógł: 1
Dołączył: 24.09.2011

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


Nie traktuje forum jak parser, poprostu dopiero się ucze, a twoja rada sprawiła, że problem nad którym męczyłem się x czasu rozwiązał się w sec. Dzięki.
Go to the top of the page
+Quote Post
johny_s
post
Post #20





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


A wystarczylo wyechować zapytanie i byś od razu widział gdzie masz błąd. Jak na pierwszy rzut oka z zapytania nie widac co jest nie tak, wrzucasz zapytanie bezpośrednio do bazy przez phpmyadmina, czy co tam używasz to Ci też ładnie pokazuje w którym miejscu jest cos nie tak.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 23.08.2025 - 23:36