Я создаю форму CGI для обновления хранимой процедуры Sybase.
qq {execute procedure test(123,45,date,'$note');};
переменная $note
- это информация, полученная из текстового поля, содержащего информацию журнала заявок на устранение неисправностей. Поскольку такие люди, которые вводят такую информацию, могут и, скорее всего, будут использовать специальные символы, такие как '|"{}
и т. Д. Мне интересно знать, есть ли способ получить эту информацию в базе данных через переменную $note
.
В большинстве моих исследований были созданы функции DBI-> quote (), но они, похоже, не работают, и я не уверен, насколько они актуальны, поскольку это хранимая процедура.
Сейчас я пытаюсь сделать следующее:
use DBI; <br/>$livedb = DBI->connect("dbi:Sybase:server=test","admin","pass") || die "could not connect to live DB, $DBI::errstr"; <br/>$note = "testing special characters:"; <br/>$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); <br/>$qy->execute($test) || die "could not journal: $DBI::errstr"; <br/>$qy->finish();