Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> addslashes() w całym zapytaniu
Regss
post 4.04.2011, 20:15:13
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 7.05.2006

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


Witam!

oto wyrywek kodu PHP:
  1. # Run all the commands in the .sql file
  2. $fp = fopen($rn_sqlfile, 'r');
  3. $count = 0;
  4. while (!feof($fp) and ($count < 10)) {
  5. $query = $this->_getline($fp);
  6. if (trim($query) != "") {
  7. $query = addslashes($query);
  8. $this->db->query($query);
  9. }
  10. }


a to jedno z zapytań sql:
  1. INSERT INTO movie (NUM, CHECKED, MEDIA, MEDIATYPE, SOURCE, DATEADD, BORROWER, RATING, ORIGINALTITLE, TRANSLATEDTITLE, FORMATTEDTITLE, DIRECTOR, PRODUCER, COUNTRY, CATEGORY, YEAR, LENGTH, ACTORS, URL, DESCRIPTION, COMMENTS, VIDEOFORMAT, VIDEOBITRATE, AUDIOFORMAT, AUDIOBITRATE, RESOLUTION, FRAMERATE, LANGUAGES, SUBTITLES, FILESIZE, DISKS, PICTURENAME) VALUES ('1', 'True', '', '', '', '2011-01-16', '', '6.100000', '10.000 BC', '10.000 BC', '10.000 BC', 'Roland Emmerich', '', '', 'Przygodowy', '2008', '109', '', 'http://www.imdb.com/title/tt262223/', 'Młody myśliwy D'Leh - cz&#322;onek żyjącego wysoko w górach plemienia, spotyka wybrankę swego serca - piękną Evolet. Kiedy oddział tajemniczych wojowników napada na wioskę i porywa Evolet, młodzieniec, by ratować dziewczynę - wyrusza na czele niewielkiej grupy myśliwych w pogoń aż na krańce świata. Wkraczając na nieznane terytorium, członkowie plemiennej drużyny odkrywają, iż poza ich własnym światem i znanymi im dotąd granicami ludzkich doznań istnieją cywilizacje o wiele większe, niż mogli podejrzewać. [opis dystrybutora dvd]', '&quot;Grzeszna przyjemność&quot;', '480 / XVID', '', 'MP3 / 2CH', '', '640x272 (2,35)', '', '', '', '', '', 'export/1.jpg');


addslashes() dodaje mi slasha przed każdym apostrofem a ja chcę aby dodawał tylko w zawartościach rekordów.
Gdzie popełniam błąd?
Go to the top of the page
+Quote Post
mat-bi
post 4.04.2011, 20:20:34
Post #2





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Czy uważasz, że php jest inteligentne? Popatrz na kod - każdą linię traktujesz addslashes, hm?

Ten post edytował mat-bi 4.04.2011, 20:21:16
Go to the top of the page
+Quote Post
Regss
post 4.04.2011, 21:12:05
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 7.05.2006

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


Traktuje każdą linię tylko nie chcę, żeby stawiał slashe przed apostrofami oznaczającymi komórki.

A może lepszym rozwiażaniem będzie zastosowanie mysql_real_escape_string?

Ten post edytował Regss 4.04.2011, 21:40:53
Go to the top of the page
+Quote Post
NEO.pl
post 4.04.2011, 22:10:39
Post #4





Grupa: Zarejestrowani
Postów: 71
Pomógł: 5
Dołączył: 26.01.2011

Ostrzeżenie: (40%)
XX---


Cytat(Regss @ 4.04.2011, 22:12:05 ) *
Traktuje każdą linię tylko nie chcę, żeby stawiał slashe przed apostrofami oznaczającymi komórki.

Proste -> nie escapuj calej linii (bo to bez sensu z reszta).

Cytat(Regss @ 4.04.2011, 22:12:05 ) *
A może lepszym rozwiażaniem będzie zastosowanie mysql_real_escape_string?

Bedzie wlasciwym, nie lepszym, bo mysql_real_escape_string() jest od tego addslashes() nie.
Go to the top of the page
+Quote Post
Regss
post 5.04.2011, 20:57:42
Post #5





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 7.05.2006

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


Jestem początkującym w PHP/MYSQL i myślałem, że prostym sposobem podmienię/dodam linijkę skryptu aby dostosować go do swoich potrzeb. Jednak widzę że wymaga to większej wiedzy niż posiadam.
Dziękuję wszystkim za odpowiedzi.

Może istnieje prosty sposób? Jest ktoś w stanie mi pomóc, będę wdzięczny.

Widzę, że nie ma pomysłu.

Problem w tym, że z pliku pobierane są już gotowe zapytania do sql'a i nie wiem jak je przefiltrować.

Poradziłem sobie takim kodem:

  1. $query = preg_replace('/(\w)\'(\w)/','$1\'\'$2', $query);


Usuwa on apostrofy jeśli zawartość pola posiada apostrof obok którego po obu stronach stoją jakieś litery. (czyli np. Jonson's Jill's itp.) Jednak występują jeszcze takie wartości zawierające apostrof które mają tylko po jednej stronie literę a po drugiej spację, można jakoś dodać taki argument?

Oto jeszcze raz zapytanie z mojego pliku:

  1. INSERT INTO movie (NUM, CHECKED, MEDIA, MEDIATYPE, SOURCE, DATEADD, BORROWER, RATING, ORIGINALTITLE, TRANSLATEDTITLE, FORMATTEDTITLE, DIRECTOR, PRODUCER, COUNTRY, CATEGORY, YEAR, LENGTH, ACTORS, URL, DESCRIPTION, COMMENTS, VIDEOFORMAT, VIDEOBITRATE, AUDIOFORMAT, AUDIOBITRATE, RESOLUTION, FRAMERATE, LANGUAGES, SUBTITLES, FILESIZE, DISKS, PICTURENAME) VALUES ('175', 'True', '', '', '', '2011-01-16', '', '7.500000', 'Honey', 'Honey', 'Honey', 'Bille Woodruff', '', '', 'Melodramat / Muzyczny', '2003', '94', 'Jessica Alba,Mekhi Phifer,Lil' Romeo,Missy 'Misdemeanor' Elliott,Wes Williams,Judi Embden,Laurie Ann Gibson,Alison Sealy-Smith,Scott Neil,Jull Weber', 'http://www.imdb.com/title/tt35393/', 'Honey Daniels (Jessica Alba) czekała całe życie, aby móc pokazać światu swój talent. Wszystko o czym marzyła jest na wyciągnięcie ręki. Przez lata jej odwaga i ambicja torowały tancerce i początkującej choreografce drogę do kariery, nawet wtedy kiedy jej najbliżsi wątpili w jej sukces.A ten kosztował ją wiele wyrzeczeń i ciężkiej pracy. W dzień uczyła tańca dzieci, w nocy pracowała jako barmanka. I w końcu zdarza się szansa &#8222;jedna na milion” w postaci wpływowego magnata muzycznego (David Moscow), który widząc Honey tańczącą w klubie, oferuje jej wymarzoną pracę. Dziewczyna nie może uwierzyć, że jej największe marzenie spełniło się. Czar jednak szybko pryska. Jej mentor stawia Honey ultimatum: albo się z nim prześpi, albo nie ma czego szukać w przemyśle muzycznym. Ostatecznie Honey odrzuca &quot;seksualną propozycję&quot; i decyduje się otworzyć własne studio tańca dla miejscowej młodzieży.', '&quot;W rytmie hip-hop&quot;', '480 / XVID', '', 'MP3 / 2CH', '', '640x352 (1,82)', '', '', '', '', '', 'export/175.jpg');


Ten post edytował Regss 5.04.2011, 20:58:25
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: 18.07.2025 - 15:08