在这种情况下是否有必要转义插入值?

时间:2012-08-28 18:07:56

标签: mysql sql insert escaping

我习惯在将单个元组插入表格时转义字符串,但是在插入的情况下我没有找到任何关于转义字符串的内容,例如:

INSERT INTO TABLE1 SELECT * FROM TABLE2 WHERE ...

...我知道TABLE1和TABLE2必须具有相同的列(并且它们有)。但我不确定逃跑。任何人都可以告诉我在这种插入情况下MySQL是如何运行的,如果需要我应该如何转义字符串?

提前致谢。

3 个答案:

答案 0 :(得分:4)

在显示的情况下,由于您完全在数据库中工作,因此无需转义任何内容。显然,当填充到table2中时,数据必须被转义。

答案 1 :(得分:1)

不要逃避任何事情。使用支持预准备语句的解决方案(如PDO或mysqli)。

修改

接受OP可能没有谈论PHP,我可以概括我的答案,无论你使用什么,一定要使用支持预准备语句的API。如果您使用的是.NET堆栈,Ruby或Python,或几乎任何可以使用的东西,那么可能有一个支持此功能的开箱即用的API。

答案 2 :(得分:1)

INSERT INTO TABLE1 SELECT * FROM TABLE2原样很好。如果您在WHERE ...部分中有任何用户输入,则需要按照您熟悉的方式进行操作。