Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Blad z zapytaniem
Forum PHP.pl > Forum > Przedszkole
viamarimar
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
ShaggyAG
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 smile.gif
viamarimar
ahhh no tak 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.
johny_s
Może jednak się pofatyguj i zerknij w manualu do czego służy funkcja mysql_num_rows
ilidir
mysql_num_rows to polecenie najczęściej stosuje się do sprawdzenia czy rekord ktory wywołujesz poleceniem SQL istnieje czy tez nie.
Szymciosek
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.
viamarimar
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
zidek
mysql_fetch_array
viamarimar
  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
jan127
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. }
viamarimar
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
jan127
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. }
viamarimar
  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
jan127
Nie wiąż błędu z limitem, ponieważ określa ile tak naprawdę chcesz wierszy wyświetlić w zapytaniu. Proponuję przeczytać manual o mysql
viamarimar
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..
jan127
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ę
viamarimar
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
johny_s
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
viamarimar
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.
johny_s
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.
viamarimar
tylko w phpmyadmin chyba nie mozna ze zmiennymi zapytan wrzucac bo wgl bledow jest cala masa
Turson
No nie możesz wrzucić zmiennych PHP do PHPMyadmin bo jak...?
Ale jak masz zapytanie
  1. $query = "SELECT * FROM tabela WHERE column1='$zmienna1' AND id=".$zmienna2;

to co za problem
  1. echo $query;

i wkleic wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.