我目前使用MySql,但更喜欢ODBC解决方案,以便将来证明。
如何在将用户输入传递到ODBC数据库之前对其进行清理?
而且,当我在它的时候,我用双引号括起我的字符串,例如“INSERT INTO VALUES(description)”“` - 但如果文本本身包含双引号怎么办?
答案 0 :(得分:8)
尝试使用参数化的SQL语句
像这样。INSERT INTO MyTable (Field1,Field2) VALUES (:Param1,:Param2)
查看embarcadero上的这篇文章,了解有关如何使用参数Using Parameters in Queries.
答案 1 :(得分:8)
答案 2 :(得分:3)
如果可以,请使用hibernate,也许通过delphi的RMI。虽然它以java为中心,但它几乎完全将程序员与底层数据库隔离开来,并处理你提到的问题以及更多问题。
顺便说一句,为了回答你的问题重新引用,保存一个包含双引号的值,将它们作为加倍的双引号转义,例如
This is "my" text
将保存为
"This is ""my"" text"
答案 3 :(得分:3)
你也可以看看Delphi - prevent against SQL injection,有一些迹象/例子。