Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> różnice w wynikach dla zapytania, pomiędzy phpmyadminem a adodb
mihauu
post 10.02.2006, 15:28:17
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.05.2005

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


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...

Ten post edytował mihauu 10.02.2006, 15:28:53


--------------------
forum dla nauczycieli | dodaj stronę do katalogu | teksty piosenek |
Go to the top of the page
+Quote Post
spenalzo
post 10.02.2006, 17:45:47
Post #2





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


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) ?


--------------------

Go to the top of the page
+Quote Post
mihauu
post 10.02.2006, 18:00:27
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 29.05.2005

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


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.


--------------------
forum dla nauczycieli | dodaj stronę do katalogu | teksty piosenek |
Go to the top of the page
+Quote Post
tort
post 10.02.2006, 19:32:37
Post #4





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 15.09.2005
Skąd: Lublin

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


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.


--------------------
tort
eX Blog
Go to the top of the page
+Quote Post
spenalzo
post 10.02.2006, 21:49:59
Post #5





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


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.


--------------------

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 15:45