通过将字符串括在单引号(')中来形成字符串常量。可以通过将两个单引号放在一行中来对字符串中的单引号进行编码-如Pascal。不支持使用反斜杠字符进行C样式转义,因为它们不是标准的SQL。
很显然,这还不足以实现一种方法,该方法针对任何输入字符串a
返回一个输出字符串b
,这样就可以在没有任何进一步操作的情况下安全地将其内插到一个SQL查询,例如
select * from names where name = $b;
很明显,从a
到b
的第一步是用'
(两个单引号)替换每次出现的''
(单引号),作为最后一步,必须添加前导和尾随单引号。但是,尚不清楚如何将关键字符像换行符一样对待,因为文档仅指出不允许转义。还不清楚哪些字符可能导致问题。
注意,我知道对此类问题的标准答复之一是“不要逃避,请使用参数绑定”,因此,这样做可能是正确的;但是,我使用的接口不允许我编写SQL values
元组,因此我必须自己提出解决方案。