![]() |
![]() ![]() |
![]() |
-Gość_Adam- |
![]()
Post
#1
|
Goście ![]() |
Wysylajac zapytanie do bazy danych standardowo piszemy ciagni znakow miedzy ' ' lub " " a w przypadku liczb pomijamy te apostrofy i cudzyslowy. Moje pytanie brzmi, dlaczego w taki wypadku pisac np tak:
skoro mozna to rowniez dobrze zapisac w taki sposob:
Jaka jest roznica w tych sposobach i ktory jest lepszy? Pytam bo pisze klase do obslugi bazy danych i zastanawiam sie czy warto rozpoznawac i dodawac apostrofy tylko do stringow czy pojsc na latwizne i wstawiac je do kazdej wartosci. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 470 Pomógł: 75 Dołączył: 21.09.2005 Skąd: że znowu Ostrzeżenie: (0%) ![]() ![]() |
apostrofy ograniczają ciąg znaków - w wypadku liczb nie ma to znaczenia, bo są zapisywane jednym ciągiem bez odstepów.
Co do szybkosci to parsowanie zapytania odbywa się w taki sam sposób i IMO nie szybsze powinno być nawet z apostrofami/cudzysłowiu, bo wtedy parser nie sprawdza kolejnych znaków pod róznym kątem tylko czeka na zamknięcie apostrofa/cudzysłowiu -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 17.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
345 - int (liczba)
'345' - string(ciąg) Jeśli mysql dostanie stringa, a pole jest typu int próbuje go rzutować na liczbę, jeśli się nie powiedzie pole przyjmie wartość 0 (albo podane jako default). Aby sprawdzić typ zmiennej użyj funkcji gettype() Ten post edytował matrach 21.04.2006, 22:58:06 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 21.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
W skryptach dynamicznie wstawiających dynamicznie dane do zapytań, lepiej z powodów bezpieczeństwa używać apostrofów nawet w liczbach (inna sytuacja zachodzi gdy chcemy użyć mySQL jako kalkulatora
![]() Wiem że to dość głupie, ale użytkownik mógłby podstawić ciąg tekstowy jako liczbę i np. użyć jednej z funkcji wbudowanych w mySQL, albo ostatecznie włamać się do systemu. Zabezpieczajcie się ludzie! -------------------- Kod thewanderer@debian:~$ sudo apt-get dist-upgrade Konieczne pobranie 666KB pakietów. Czy chcesz kontynuować? [T/n] nieeeeeeee |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 470 Pomógł: 75 Dołączył: 21.09.2005 Skąd: że znowu Ostrzeżenie: (0%) ![]() ![]() |
@slash12345: Gość_Adam wyraźnie napisał że:
Cytat Pytam bo pisze klase do obslugi bazy danych więc Twoja uwaga jest nie dokońca zasadna, bo przecierz można to rozwiązać poza klasą do obsługi mysql, zresztą tak czy inaczej apostrofy wcale nie uchronią przed dostepem do bazy przez nieautoryzowane osoby -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.05.2025 - 11:57 |