Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5379578
  • 博文数量: 1144
  • 博客积分: 11974
  • 博客等级: 上将
  • 技术积分: 12312
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-13 20:06
文章存档

2017年(2)

2016年(14)

2015年(10)

2014年(28)

2013年(23)

2012年(29)

2011年(53)

2010年(86)

2009年(83)

2008年(43)

2007年(153)

2006年(575)

2005年(45)

分类: LINUX

2009-12-02 15:50:01

Perl向数据库中插入特殊字符的问题

今天用perl写了一个程序像数据库中插入一段文章,遇到sql错误,发现输入的数据中含有一些特殊字符,例如单引号、双引号、$等特殊字符。
php的函数是addslashes(),perl里对应函数是quote()。

下面有别人写的一个例子,大家可以看一下
举例说明:
需要输入数据库的数据列名为city,值为Xi'an
use DBI;
my $dsn="DBI:mysql:$db_name:localhost";
my $dbh=DBI->connect($dsn,$db_user,$db_pass,{RaiseError=>1});

my $city=$dbh->quote("Xi'an");
$dbh->do(qq{insert into citylist values($city)});
$dbh->disconnect();

这样,数据就可以顺利的写入数据库了。
其实,quote方法的本质就是使用一种特殊的符号作为数值的分界符,避免和我们常用的特殊字符发生冲突,导致数据库操作失败。

 

my $sth = $dbh->prepare(q{
INSERT INTO sales (product_code, qty, price) VALUES (?, ?, ?)
}) or die $dbh->errstr;
while (<>) {
chomp;
my ($product_code, $qty, $price) = split /,/;
$sth->execute($product_code, $qty, $price) or die $dbh->errstr;
}

阅读(1024) | 评论(0) | 转发(1) |
0

上一篇:msndump.pl

下一篇:打印html 表格输出

给主人留下些什么吧!~~