|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Konstantin Tokar 2:5020/400 02 Mar 2005 04:24:56 To : Alex Zaitsev Subject : Re: Кавычки в тексте... :( -------------------------------------------------------------------------------- Alex Zaitsev wrote: > Hello, All! > > Вот кусок скрипта: > > $dbh->do("INSERT INTO $area_str > (from_name,from_addr,to_name,area,subject,date,attr,text) > VALUES('$fromname','$fromaddr','$toname','$area_str','$subject','$date','$at > tr','$text')"); > > т.е. добавляю строку в BD, но тут трабла: в переменной $text могут быть и > кавычки, и если такое случается, то возникает ошибка, типа: > > DBD::mysql::db do failed: You have an error in your SQL syntax. Check the > manual that corresponds to your MySQL server version for the right syntax to > use near 's so wrong Mikey... I just clicked on that link above > > Т.е. в данном случае в $text было > Let's so wrong Mikey... > кавычка из которого и послужила "палкой в колесо"... > > Подскажите, плз, как обойти енти баги? > > With best regards, Alex Zaitsev. E-mail: d_angel@vologda.ru > Я бы переписал так твой запрос: $dbh->do(<<END, {}, $fromname, $fromaddr, $toname, $area_str, $subject, $date, $attr, $text); INSERT INTO $area_str (from_name,from_addr,to_name,area,subject,date,attr,text) VALUES(?, ?, ?, ?, ?, ?, ?, ?) END ? - это из главы про placefolders, такой способ указания SQL запроса, как я использовал, удобнее, чем в кавычках. Hу, и, если уж началось использование placefolders, надо подумать и о том, чтобы не компилировать запрос каждый раз. Во многих случаях это замедляет выполнение на порядки. Может быть, если запрос выполняется часто, нодо сделать несколько откомпилированных для разных $area_str . Естественно, с placefolders появятся свои засады, но это более правильный путь. --- ifmail v.2.15dev5.3 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/65774b640cd0.html, оценка из 5, голосов 10
|