Если вы используете DBI , вы можете использовать заполнители для отправки произвольных данных в базу данных без необходимости экранирования. Заполнителем является вопросительный знак в prepare
заявлении, фактическое значение присваивается execute
:
use DBI;
$dbh = DBI->connect("DBI:mysql:....",$user,$pass)
or die("Connect error: $DBI::errstr");
my $sth = $dbh->prepare(qq{ SELECT something FROM table WHERE name = ? });
$sth->execute('the gambia');
# fetch data from $sth
$dbh->disconnect();
Редактировать: Если вы составляете запрос (как вы предлагали в комментариях), вы можете использовать quote
метод:
my $country = "AND country = " . $dbh->quote('the gambia');
my $sth = $dbh->prepare(qq{ SELECT something FROM table WHERE name = ? $country});