Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Błąd z zapytanie wyświetlającym wyniki.
Forum PHP.pl > Forum > Przedszkole
Maniek1313
Próbuję wykonać zapytanie wyświetlające wszystkie dane z bazy w których kolumna rodzaj = dane3
  1. SELECT * FROM lista WHERE rodzaj='dane3';


Wyskakuje błąd
  1. MySQL zwrócił pusty wynik (zero rekordów).


I nie wiem w czym tkwi problem oczywiście tabela lista , kolumna rodzaj , i dane3 istnieją.
Adi32
Coś musiałeś pokręcić...

A wykonaj najpierw:

  1. INSERT INTO lista SET rodzaj='dane3'


i spróbuj Twojego zapytania. Oczywiście, jeżeli masz jakieś kolumny NOT NULL to uzupełnij zapytanie dla nich jakimiś danymi.
Niktoś
A spróbuj jeszcze tak:
  1. SELECT * FROM lista WHERE rodzaj="dane3";
Maniek1313
Niktoś nadal nie działa.

Ta tabela ma 3 kolumny nazwa , id_rekordu , rodzaj

i jak wywołuje takie polecenie sql to działa

  1. SELECT * FROM lista WHERE nazwa="nazwa1";


Kolumna nazwa ma index primary
Kolumna id_rekordu ma index UNIQUE
Kolumna rodzaj nie ma indexu

PS. Dodam jeszcze że jeżeli rekordy dodam do bazy przez stronę phpmyadmin to działa zapytanie a jak przez php to nie chce wyświetlić rekordów :/

questionmark.gif
Adi32
Jak wygląda zapytanie z poziomu PHP którym wysyłasz dane?
Maniek1313
  1. $query = "SELECT * FROM lista WHERE rodzaj='dane3'";
  2. $result = mysql_query($query)
  3. or die("Nie prawidłowe zapytanie sql");


a tutaj masz jak dodaję rekordy

  1. $sql = mysql_query("INSERT IGNORE INTO `".$baza."`.`lista` (`nazwa`, `id_rekordu`, `rodzaj`) VALUES ('".$nazwa_bez."', '".$zmiana4."', '".$rodzaje4."');")
Adi32
Cytat(Maniek1313 @ 15.12.2011, 20:04:27 ) *
  1. $query = "SELECT * FROM lista WHERE rodzaj='dane3'";
  2. $result = mysql_query($query)
  3. or die("Nie prawidłowe zapytanie sql");


a tutaj masz jak dodaję rekordy

  1. $sql = mysql_query("INSERT IGNORE INTO `".$baza."`.`lista` (`nazwa`, `id_rekordu`, `rodzaj`) VALUES ('".$nazwa_bez."', '".$zmiana4."', '".$rodzaje4."');")


  1. $sql = mysql_query("INSERT INTO
  2. $baza.lista
  3. SET
  4. nazwa='$nazwa_bez',
  5. id_rekordu='$zmiana4',
  6. rodzaj = '$rodzaje4'")


Nie używaj IGNORE bez potrzeby.
Sprawdź czy wszystkie zmienne niosą dane.
Maniek1313
potrzebuję IGNORE gdyż te dane do bazy danych dodawane są w pętli i jeżeli dany rekord już istnieje to go pomija
Adi32
Czyli najprawdopodobniej nie dodajesz wcale wiersza zawierającego:

rodzaj='dane3'

ponieważ pewnie próbujesz dodać id_rekordu które już istnieje.

Taka hipoteza.

Dziwię się czemu większość ludzi korzysta z tego sposobu budowania zapytań :/
Maniek1313
a jak mam inaczej budować zapytania questionmark.gif



dane3 na 100% jest w bazie danych
Adi32
Dziwny ten Twój problem, wiersz dodaje się inaczej z poziomu PHP niż z PhpMyAdmina? I wpływa to na select?

Co do budowy zapytań to jest od groma klas do relacji które są bardzo pomocne.

Ja wykonuje zapytania tak:

  1. $db = baza::getInstance();
  2.  
  3. if($uzytkownicy = $db->query("SELECT * FROM user")->res()) {
  4. foreach ($uzytkownicy as $uzytkownik) {
  5. $table = new table('uzytkownicy');
  6. // itd
  7. }
  8. }
  9.  
Maniek1313
jak dodam rekord do bazy przez php to tych nie wykrywa jak chce wypisać z rodzaj dane3 a jak dodam przez phpmyadmin to wyświetli :/
tomec
Sprawdź uprawnienia do bazy. Do PHPmyadmina pewnie logujesz się na roota? Zapytanie przez przeglądarkę wykonywane jest z poziomu domyślnego usera www-data. Jesli się mylę niech ktoś mnie poprawi...
Maniek1313
tak tylko jest jak się logujesz na localhoscie a na serwerze jak masz to masz przypisanego jednego użytkownika , który ma do wykorzystanie jedną bazę (zależy od serwera w niektórych można stworzyć więcej baz danych).
Niktoś
Jeśli zapytanie Tobie działa w sql ,a nie chce działać w PHP ,to jaki z tego wniosek?
Maniek1313
zapytanie działa tylko że elementy dodane przez php do bazy nie są wyświetlane nawet jak wejdę do phpmyadmin i wywołam zapytanie to wyświetla tylko te rekordy które dodałem ręcznie a te co dodałem z poziomu php są omijane

spróbuję dodać or die(mysql_error()); i zobaczymy co wyskoczy

ps. nic nie wyskakuje czyli zapytanie jest dobre

zrobiłem zrzut danych z bazy w pliku sql i wyszło że każde rekord w kolumnie rekord ma na końcu \r

i jak zrobiłem takie zapytanie to działa

  1. SELECT * FROM lista WHERE rodzaj='dane3\r';
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.