Как я могу вставить строки с кавычками в Perl запросы DBI?

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

Я думаю, что лучше всего просто разделить .jars или позволить потребляющему приложению запустить сервер.

6
задан Adam Bellaire 9 October 2009 в 20:16
поделиться

3 ответа

Используйте связанное использование запроса

$sth = $dbh->prepare("insert into tbl_name(col_one,col_two) values(?,?)");
$sth->execute($val1, $val2);

При использовании связанных переменных всего оставляют для Вас.

Обновление: Измененный мой пример для соответствия примеру, отредактированному в вопрос.

Обновление: Я не знаю, почему Adam удалил свой ответ, но если по некоторым причинам Вы не можете использовать связанные переменные (иначе "заполнители"), можно также использовать $dbh->quote($var) на переменной. Например:

$sql = sprintf "SELECT foo FROM bar WHERE baz = %s",
    $dbh->quote(q("Don't"));
25
ответ дан 8 December 2019 в 03:14
поделиться

Используйте quote() метод. Это разумно обработает заключение в кавычки на Вас. Пример из документов:

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

Немного измененный, чтобы иметь оба типа кавычек:

$sql = sprintf "SELECT foo FROM bar WHERE baz = %s",
            $dbh->quote(q("Don't"));
3
ответ дан 8 December 2019 в 03:14
поделиться

Один маленький протест на связанных заполнителях, я создаю довольно большой загружающий базу данных сценарий, который первоначально использовал связанных заполнителей в более старой версии Perl/DBI и нашел то, что, кажется, утечка памяти в реализации заполнителя, поэтому если Вы смотрите на использование их в персистентном процессе/демоне, или в контексте большого объема можно хотеть удостовериться, что размер процесса не становится проблемой. При переключении на создание строк запроса с помощью кавычки () метод устранил проблему для меня.

2
ответ дан 8 December 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: