簡體   English   中英

轉義和Perl DB查詢

[英]Escaping & in perl DB queries

我需要處理數據庫中的某些記錄,並將它們的值寫入另一個表。 其中一些值在字符串中帶有“&”,即“ Me&You”。 缺少查找所有這些值並將\\放在任何&之前的方式,如何將這些值插入到一個沒有&對oracle造成阻塞的表中?

使用占位符。 與其在您的SQL語句中添加'$who' ,不如准備一個? 在那里,然后綁定$ who,或者以$ who作為適當的參數執行。

my $sth = $dbh->prepare_cached('INSERT INTO FOO (WHO) VALUES (?)');
$sth->bind_param(1, $who);
my $rc = $sth->execute();

這比自己嘗試更安全,更快捷。 (DBI中有一個“ quote”方法,但是比這更好。)

絕對不需要重新發明輪子。 如果您使用的是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);

DBD::Oracle模塊(以及所有其他DBD::xxxxx模塊)已經過廣泛的測試和實際使用。 讓它擔心如何將您的文本插入數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM