![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 2 Dołączył: 3.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Czy dla MySQL'a jest jakaś różnica między zapytaniami:
msql_query("select nazwa from tablica where id=$id"); msql_query("select nazwa from tablica where id='$id'"); Chodzi mi o apostrofy w drugim zapytaniu, id jest typu INT. Czy ostatnio coś się zmieniło w tej kwestii? Nigdy nie miałem z tym problemu, a teraz mysql źle odpowiada na niektóre zapytania ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 848 Pomógł: 0 Dołączył: 7.07.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
MySQL interpretuje inaczej zmienną w apostrofach i inaczej bez apostrofów nawet, jeśli zmienną jest INT
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 2 Dołączył: 3.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Vertical @ 2005-02-17 14:03:40) MySQL interpretuje inaczej zmienną w apostrofach i inaczej bez apostrofów nawet, jeśli zmienną jest INT Czy mógłbyś rozwinąć myśl? To, że interpretuje inaczej to się zgodzę, ale czy może dawać inne wyniki jeśli $id=3? Tzn. czy w jednym lub drugim przypadku może nie zwracać rekordu jeśli rekord o id=3 istnieje? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 848 Pomógł: 0 Dołączył: 7.07.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat czy może dawać inne wyniki jeśli $id=3? Jeśli $id=3 i nie jest wzięte w apostrofy przy wykonywaniu zapytania zwykle MySQL wysypuje błąd lub nic nie zwraca |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 166 Pomógł: 0 Dołączył: 1.04.2004 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Vertical @ 2005-02-17 15:19:15) Jeśli $id=3 i nie jest wzięte w apostrofy przy wykonywaniu zapytania zwykle MySQL wysypuje błąd lub nic nie zwraca Pierwsze słysze. Według tego co mówisz wszystkie moje skrypty, które wyświetlają prawidłowy wynik, tak na prawdę nie działają ? Jeśli faktycznie cyfry trzeba wstawiać w '' lub "", to prosiłbym o podanie linka do manuala mysql, gdzie to opisali. Dla przykładu ten kawałek:
nie działa ? -------------------- Nigdy nie kłóć się z głupim, ludzie mogą nie dostrzec różnicy.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 196 Pomógł: 2 Dołączył: 17.01.2004 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
Yarecki: chyba nie zrozumiałeś wypowiedzi Verticala. On właśnie napisał, że liczb nie należy ujmować w cudzysłowia w zapytaniach.
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 166 Pomógł: 0 Dołączył: 1.04.2004 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
@crashu mógłbym zacytować wypowiedź z innego wątku, ale nie o to chodzi.
BTW. Jeśli cyfra jest w '' lub "", to baza musi ją rzutować do odpowiedniego typu (int/float/...). Ten post edytował Yarecki 18.02.2005, 00:13:32 -------------------- Nigdy nie kłóć się z głupim, ludzie mogą nie dostrzec różnicy.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 848 Pomógł: 0 Dołączył: 7.07.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat Pierwsze słysze. Tak jest w moim przypadku (MySQL 4.0). Zresztą wystarczy poszukać na forum, bo było kilka przypadków, że ktoś liczby nie wpisał w '' i MySQL wysypywał błąd Ten post edytował Vertical 18.02.2005, 14:33:37 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 2 Dołączył: 3.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Vertical @ 2005-02-18 13:32:28) Tak jest w moim przypadku (MySQL 4.0). Zresztą wystarczy poszukać na forum, bo było kilka przypadków, że ktoś liczby nie wpisał w '' i MySQL wysypywał błąd Tylko, że w moim przypadku błąd, czy raczej brak wyników, występował właśnie jak używałem apostrofów. Tzn. mysql raz zwracał wyniki, a raz nie przy tych samych warunkach (może była to też przyczyna php, ale samo zapytanie i przekazywanie zmiennych do polecia sql raczej były proste). Chciałem właśnie zrezygnować z apostrofów i w przypadku typu INT nie używać ich, ale skoro mówicie, że tak jest lepiej i nie wpływa to negatywnie na wykonywane zapytanie to chyba pozostane przy apostrofach. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 166 Pomógł: 0 Dołączył: 1.04.2004 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
@Vertical U mnie, a raczej u mojego kolegi, było na odwrót. Kiedy miał, apostrofy zapytanie raz działało, a raz nie. Dopiero po usunięciu, nie było dziwnych przerw, w działaniu skryptów.
Pod adresem: http://dev.mysql.com/doc/mysql/en/literals.html tylko strinki są ujmowane w '' lub "". -------------------- Nigdy nie kłóć się z głupim, ludzie mogą nie dostrzec różnicy.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 196 Pomógł: 2 Dołączył: 17.01.2004 Skąd: Sosnowiec Ostrzeżenie: (0%) ![]() ![]() |
No i tak powinno być (liczby w zapytaniach nie powinny być ujmowane w cudzysłowia), już się zacząłem gubić w wypowiedziach Verticala, albo od poczatku czegoś nie zrozumiałem.
-------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 22.04.2004 Skąd: Żoliborz Ostrzeżenie: (0%) ![]() ![]() |
Vertical już nie pierwszy raz myli ludzi.
-------------------- Visual Basic - kto by pomyślał :)
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Liczby w znaczeniu INT nie powinny być ujmowane w cudzysłowy, liczby jako ciągi powinny - i tyle.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 25.06.2004 Ostrzeżenie: (0%) ![]() ![]() |
to poniekad podobny problem wiec prosze o pomoc:
mam cos takiego: z forma na stronie dodaje nazwy utworow do bazy z punktami. Potem chce pokazywac najpopularniejsze utwory. Wyciagam wiec z bazy niepotwarzajace sie rekordy (distinct utwor) i wykonuje kolejne zapytanie sumujace punkty dla kazdego z tych rekordow (utworu). Problem pojawil sie gdy w nazwie utworu wystapi ' np. don't probowalem juz kilku opcji.. bez skutku... myslalem ze to rozwiaze problem: przed dodaniem do bazy robie htmlentities($utwor, ENT_QUOTES); wtedy w bazie zamiast don't mam
wiec powinien wyciagnac ten ciag i policzyc ile razy wystepuje w bazie i ile ma punktow... ale nie dziala ...co dziwne zapytanie: SELECT DISTINCT utwor .... daje po wyswietlenie wartosc don\'t ![]() czyli co automatycznie zdekodowal zmienna ![]() i podliczenie nie wychodzi bo mowi ze nikt nie glosowal na don\'t tylko na ... co robienie nie tak ..pomozcie, please.... edit: wstawiam zapis w php zeby nie zmienilo posta ![]() Ten post edytował marmomm 22.02.2005, 10:34:35 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 166 Pomógł: 0 Dołączył: 1.04.2004 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Przed wstawieniem do bazy danych, użyj addslashes(), a po wyciągnięciu użyj stripshalshes().
-------------------- Nigdy nie kłóć się z głupim, ludzie mogą nie dostrzec różnicy.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 09:44 |