Я создаю форму CGI для обновления хранимой процедуры Sybase.
qq {execute procedure test(123,45,date,'$note');}; переменная $note представляет собой информацию, полученную из текстового поля, которое содержит информацию журнала регистрации неисправностей. Поскольку такие люди, которые вводят такую информацию, могут и, скорее всего, будут использовать специальные символы, такие как '|"{} и т. д. Мне любопытно узнать, есть ли способ получить эту информацию в базе данных через переменную $note.
В большинстве моих исследований использовались функции DBI->quote(), но они, похоже, не работают, и я не уверен, насколько они актуальны, поскольку это хранимая процедура.
Прямо сейчас я пытаюсь сделать следующее:
use DBI;
$livedb = DBI->connect("dbi:Sybase:server=test","admin","pass") || die "could not connect to live DB, $DBI::errstr";
$note = "testing special characters:";
$livedb->do(qq {execute procedure jinsert(5304905,65,getdate,?);},undef,(param('$note')));
Я получаю следующую ошибку:
Undefined subroutine &main::param called at test.cgi line 11.
когда я использую следующие методы, код дает сбой, если ' существует в $note:
$qy = $livedb->prepare($note);
$qy->execute($test) || die "could not journal: $DBI::errstr";
$qy->finish();