今天用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; }
|