perl mysql插数据时,特殊符号的自动转义处理

场景:用perl写了个脚本,要将一些python、perl、shell语言写的脚本,批量读取并存到mysql中,由于脚本里有各种特殊字符,如单双引号,转义符,反斜杠,通过传统的转义符\并不能解决所有问题

$script_content =~ s/'/\\'/g;
$script_content =~ s/"/\\"/g;

 这种转义只能解决单双引号的问题,如果脚本内容里有\符号或者/符号,就无解了

因此,就要使用DBI的:

Placeholders and Bind Values

占位符和绑定值

my $sql = "insert into command_script(name,content,creater) values('$script',?,'flw521521');";
my $sth = $dbh_mbase->prepare($sql);
$sth->execute("$script_content") or die("SQL Failed:$sql\n");

 如上,在脚本prepare的时候,脚本内容是用占位符?表示,因此在prepare不会报错,在execute时,绑定具体的值即可

实践证明,不管你脚本里有任何特殊符号,此方法都100%有效,no error

猜你喜欢

转载自laibulai.iteye.com/blog/2195306
今日推荐