Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: addslashes() w całym zapytaniu
Forum PHP.pl > Forum > Bazy danych > MySQL
Regss
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?
mat-bi
Czy uważasz, że php jest inteligentne? Popatrz na kod - każdą linię traktujesz addslashes, hm?
Regss
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?
NEO.pl
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.
Regss
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');
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.