我需要操縱DB中的一些記錄,並將他們的值寫入另一個表。其中一些值的字符串中有'&',即'我&您'。沒有找到所有這些值並在任何&之前放置一個\,如何將這些值插入到無法在&上扼制的oracle的表中?轉義和在Perl數據庫查詢
回答
使用佔位符。不要把'$who'
放在你的SQL語句中,而要準備一個?在那裏,然後綁定$ who,或者用$ who作爲適當的參數執行。
my $sth = $dbh->prepare_cached('INSERT INTO FOO (WHO) VALUES (?)');
$sth->bind_param(1, $who);
my $rc = $sth->execute();
這比自己嘗試做起來更安全,更快速。 (DBI中有一個「引用」方法,但這比這更好。)
這得到了它。感謝 – Lazloman
*這*參見http://bobby-tables.com/perl.html –
我最喜歡的單一特徵Oracle被命名爲佔位符:'my $ sth = $ dbh-> prepare_cached('INSERT INTO FOO(WHO)VALUES(:who)');''$ sth-> bind_param(':who',$ who);'This降低了SQL的可移植性,但是如果您已經與Oracle緊密相連,它可以極大地提高可維護性。 –
這絕對是一個你不需要重塑的車輪。如果您使用的是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
模塊)進行了廣泛的測試和真實世界使用。讓它擔心如何讓你的文本插入到數據庫中。
- 1. 在查詢中自動轉義數據
- 2. Java和數據庫查詢?
- 3. 轉換MS Access數據查詢到SQL Server數據庫查詢
- 4. Perl和PostgreSQL轉義$
- 5. 運行自定義數據庫查詢
- 6. MODx查詢自定義數據庫表
- 7. CSqlDataProvider:如何爲數據庫查詢轉義字符串Yii
- 8. 查詢在線數據庫
- 9. PHP查詢在數據庫
- 10. 查詢數據庫
- 11. 查詢數據庫
- 12. 查詢數據庫
- 13. 數據庫 - 查詢?
- 14. 在Django中查詢和更新數據庫查詢?
- 15. 數據庫結構和查詢層次數據和數據
- 16. 轉換數據庫查詢的未知格式到MySQL查詢
- 17. 自動在同一數據庫的數據庫連接和查詢的檢查
- 18. 如何在Perl中爲MySQL查詢轉義'\ n'?
- 19. 查詢和製作生產數據庫的轉儲
- 20. 自定義查詢和修改數據
- 21. 在沙發數據庫查詢部分數據庫查看
- 22. 自定義SimpleCursorAdapter,數據庫查詢和空指針異常
- 23. 和Sql自定義數據庫查詢指定的user_ID的
- 24. mysql數據庫設計和查詢optimazation
- 25. Swift和Firebase查詢數據庫
- 26. 查詢,增加工資和數據庫
- 27. 服務器和數據庫查詢
- 28. TPC DS查詢和數據庫
- 29. boost.asio和對數據庫的查詢
- 30. 數據庫設計和查詢
你看過http://stackoverflow.com/questions/1137354/oracle-pl-sql-escape-character-for- – vol7ron
如果您使用DBI,則使用bind_param()將值引入表中。 (我假設你正在建設一個查詢字符串並將其傳遞到批發準備/執行? –