Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MySQL i slashe
Forum PHP.pl > Forum > Bazy danych > MySQL
Sil3nt
Wykonuję zapytanie funkcją mysql_query i zauważyłęm dziwną rzecz:
die("[zapytanie"]); wypisuje:
Kod
INSERT INTO contact (date, ip, useragent, autor, temat, tresc, kontakt, new) VALUES (1215471280, '192.168.1.102', 'Opera/9.23 (Windows NT 6.0; U; pl)', 'asd', 'test\'a\"b/c\\d', 'dsfaeafe', '', 1)

wartość pola "temat" to htmlspecialchars($_POST['temat'],ENT_QUOTES); - jak widać są slashe przed speclajnymi znakami


natomiast po wykonaniu mysql_query("[zapytanie]") w phpadminie mam wpis:
Kod
11   1215471782   asd   test'a"b/c\d   dsfaeafe       192.168.1.102   Opera/9.23 (Windows NT 6.0; U; pl)   1



Gdzie się podziały moje slashe? Czy funkcja mysql_query automatycznie je usuwa i nie trzeba wywoływać stripslashes?
Serwer www to krasnal (magic_quotes domyślnie włączone).
dr_bonzo
Slashy potrzebujesz TYLKO przy wkladaniu danych do bazki [a konkretniej, do zapytania]. Chcesz miec w tytule znak '\', to w zapytaniu eskejpujesz ["jak widać są slashe przed speclajnymi znakami"] go backslashem: '\\', i bazka wstawi sobie jednego backslasha do danych.
Wiec przy wyciaganiu danych stripslashesz NIE uzywasz.

Tak samo jak masz; echo "aa \\ bb"; ktore wypisze ci: 'aa \ bb'
Sil3nt
No, rozumiem że baza zamieni \' na ' i \\ na \ ale w jednym miejscu jest \" a w rekordzie "
Shili
bo & to też znak specjalny. Chcesz mieć \&, to musisz \& zamienić na \\&
Innymi słowy mysql traktuje ten znak jako już escapeowany, więc się nie kłopocze drugim escapeowaniem.
Sil3nt
Dzięki za odpowiedź. 
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.