我需要操作数据库中的一些记录并将其值写入另一个表.其中一些值在字符串中有一个'&',即'Me&You'.如果没有找到所有这些值并在任何&之前放置一个\,那么如何将这些值插入到一个没有oracle的表中?
Tan*_*lus 12
使用占位符.而不是放入'$who'你的SQL语句,准备一个?相反,然后绑定$ who,或者以$ who作为适当的参数执行.
my $sth = $dbh->prepare_cached('INSERT INTO FOO (WHO) VALUES (?)');
$sth->bind_param(1, $who);
my $rc = $sth->execute();
Run Code Online (Sandbox Code Playgroud)
这比尝试自己做更安全,更快.(在DBI中有一个"引用"方法,但这比这更好.)
这绝对是你不需要重新发明的轮子.如果您正在使用DBI,请不要忘记输入; 使用占位符.
例:
my $string = "database 'text' with &special& %characters%";
my $sth = $dbh->prepare("UPDATE some_table SET some_column=?
WHERE some_other_column=42");
$sth->execute($string);
Run Code Online (Sandbox Code Playgroud)
该DBD::Oracle模块(以及所有其他DBD::xxxxx模块)经过了广泛的测试和实际使用.让它担心如何将文本插入数据库.