查看: 558|回复: 2

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

 关闭 [复制链接]

签到天数: 2586 天

连续签到: 5 天

[LV.Master]至尊海神IIIIII

发表于 2009-12-3 19:38 | 显示全部楼层 |阅读模式
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方法的本质就是使用一种特殊的符号作为数值的分界符,避免和我们常用的特殊字符发生冲突,导致数据库操作失败。
<
PCOS系统下载站:http://zhuangji.wang

签到天数: 2586 天

连续签到: 5 天

[LV.Master]至尊海神IIIIII

 楼主| 发表于 2009-12-3 19:38 | 显示全部楼层

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

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

下面有别人写的一个例子,大家可以看一下
举例说明:
需要输入数据库的数据列名为city,值为Xi&#39;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&#39;an\");
$dbh->do(qq{insert into citylist values($city)});
$dbh->disconnect();

这样,数据就可以顺利的写入数据库了。
其实,quote方法的本质就是使用一种特殊的符号作为数值的分界符,避免和我们常用的特殊字符发生冲突,导致数据库操作失败。
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

签到天数: 2586 天

连续签到: 5 天

[LV.Master]至尊海神IIIIII

 楼主| 发表于 2009-12-3 19:38 | 显示全部楼层

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

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

下面有别人写的一个例子,大家可以看一下
举例说明:
需要输入数据库的数据列名为city,值为Xi&#39;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&#39;an\");
$dbh->do(qq{insert into citylist values($city)});
$dbh->disconnect();

这样,数据就可以顺利的写入数据库了。
其实,quote方法的本质就是使用一种特殊的符号作为数值的分界符,避免和我们常用的特殊字符发生冲突,导致数据库操作失败。
PCOS系统下载站:http://zhuangji.wang
回复 支持 反对

使用道具 举报

本版积分规则