Как правильно вставить данные, содержащие специальные символы, в поле базы данных, используя Perl и DBI? - PullRequest
0 голосов
/ 01 июля 2010

У меня есть форма, похожая на вопрос / комментарий на этом сайте, которую я хочу опубликовать в поле в базе данных.

Однако, если кто-то, куда помещать специальные символы, такие как @#;"|, либо не работает, либо вставляется неправильно. Есть ли способ вставить указанные данные в базу данных без Perl, пытающегося обрабатывать определенные символы как операторы?

1 Ответ

3 голосов
/ 01 июля 2010

Вы можете использовать метод дескриптора базы данных quote. Цитировать документацию:

цитата

$sql = $dbh->quote($value);
$sql = $dbh->quote($value, $data_type);

Цитировать строковый литерал для использования в качестве литерального значения в инструкции SQL, путем экранирования любых специальных символов (таких как кавычки), содержащихся в строке и добавление необходимого типа внешней цитаты знаки.

$sql = sprintf "SELECT foo FROM bar WHERE baz = %s", $dbh->quote("Don't");

Рекомендуется использовать заполнители и связывать значения:

$dbh->do("INSERT INTO foo VALUES(?)", undef, "@#;|");
...