Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: różnice w wynikach dla zapytania
Forum PHP.pl > Forum > Bazy danych > MySQL
mihauu
witam.

Mam sobie tabelke ogloszenia_ogl. Jest tam kilka pól charakteryzujących produkt , kategorie w ktorej sie znajduje oraz aktywnosc. Poczatkowo pole akcept bylo set ('0','1') wszystko dzialalo pieknie na zapytanie :
  1. SELECT COUNT(id) AS ile
  2. FROM ogloszenia_ogl
  3. WHERE akcept='1' AND sciezka LIKE '%/$k%'



Liczylo wszystkie rekordy aktywne z kategorii i podkategorii $k.

Postanowilem wprowadzic 3 wartosc do komorki akcept.
Ustawilem ja SET('0','1','2'). W tym momencie wszystko sie posypalo. Zapytanie zaczelo zwracać rekordy niezależnie od pola akcept. Teraz zmieniłem poraz kolejny na int(2) - caly czas jest źle.
Baza jest wypelniona paroma rekordami wiec niespecjalnie wiem co zrobić, najchętniej bym ją skasował i zaczął od nowa, ale to raczej nie wchodzi w gre.
Co ciekawe jesli to zapytanie wkleje do phpmyadmina to dziala poprawnie , jednak w skrypcie w ogole nie bierze pod uwagę pola akcept, zupelnie jakby go nie bylo.


php Version 4.4.1
mysql Client API version 4.1.12

adodb 4.65


a kawelek kodu wyglada tak:

  1. <?php
  2. if ($page != ""){
  3. $zzz = $page * 10;
  4.  
  5. } else {
  6. $zzz=11;
  7. $page=1;
  8. }
  9.  
  10. $limit_min = $zzz - 10;
  11. $limit_max = 10;
  12.  
  13. $i = 0;
  14. $liczenie ="SELECT COUNT(id) AS ile FROM ogloszenia_ogl WHERE akcept='1' AND sciezka LIKE '%/$k%' ";
  15. $policz_ile2 = $db->Execute("$liczenie");
  16. echo($liczenie."<br><br>");
  17. if ($policz_ile2 === false) die ("nie moglem policzyc rekordow"); //
  18. while (!$policz_ile2->EOF) {
  19. $ile_zdjec = $policz_ile2->fields['ile'];
  20. // echo("$ile_ogloszen asdasd");
  21. $policz_ile2->MoveNext();
  22.  
  23. } // while
  24. ?>



najlepsze jest to jak potem wyswietlam te wyniki i kaze pytam where akcept='1' to on pokazuje mi wszystkie rekordy, i przy kazdym wyswietlam ile wynosi akcept to pokazuje 1.

jesli spytam sie :
  1. WHERE akcept='1'


to pokazuje cos innego niz
  1. <?php
  2. where akcept=1
  3. ?>



Czy to możliwe żeby baza się sypła? Jak skopiowałem tę tabelę to zapytanie wcale nie chce działać w adodb(zwraca blad), w phpmyadmin działą








Spotkał się ktoś z czymś takim i wie jak to ugryźć ?
Z góry dzięki za pomoc.

ps mam nadzieje że w dobrym dziale pisze...
spenalzo
Cytat(mihauu @ 2006-02-10 16:28:17)
jesli spytam sie :
  1. WHERE akcept='1'


to pokazuje cos innego niz
  1. <?php
  2. where akcept=1
  3. ?>

Pierwsze zapytanie zwróci wyniki gdzie pole akcept jest równe STRINGowi 1.
Zapytanie drugie zwróci rekordy gdzie pole akcept zawiera LICZB 1.


Cytat
Postanowilem wprowadzic 3 wartosc do komorki akcept.
Ustawilem ja SET('0','1','2').

Na pewno SET('0','1','2') a nie SET(0,1,2) ?
mihauu
tak na pewno ustawiałem je SET('0','1','2')


tylko że potem zmieniłem na int(2) bo myślałem że to pomoże - jak widać nie pomogło.
tort
Czy użycie typu SET jest faktycznie konieczne, tzn. czy istnieje ogłoszenie, które będzie miało wartośc kolumny 1,2? Jeśli nie, to lepiej wykorzystać typ ENUM. Nigdy nie natrafiłem na problemy z typem ENUM, jeśli tylko traktowałem jego wartość jako string, a nie liczbę, tj. pisałem '1' a nie 1.
spenalzo
hmm... wlasnie mi coś nie pasowalo.Nie wiem czmeu, ale nie zauważylem że używasz tam SET... zamień to na ENUM, tak jak pisal tort, jest to znacznie lepsze rozwiązanie.
O ile sę nie myle, to zresztą SET ma troszke inne zastosowanie.
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-2024 Invision Power Services, Inc.