正如标题所说,我是否必须在使用 bind_param() 时转义用户输入,还是在内部完成?
谢谢你。
不,您不需要在绑定参数时转义数据以防止 SQL 注入。
但是,这并不能免除您验证所述数据的责任。
绑定参数时,不会执行转义(内部或其他方式)。使用参数占位符准备 SQL 语句,并在执行时传递这些占位符的值。
数据库知道参数是什么,并相应地处理它们,而不是 SQL 值插值。
不。
引用这个
http://mysql.lamphost.net/tech-resources/articles/4.1/prepared-statements.html
“通常在处理临时查询时,在处理从用户那里收到的数据时需要非常小心。这需要使用转义所有必要故障字符的函数,例如单引号、双引号, 和反斜杠字符。在处理准备好的语句时这是不必要 的。数据的分离允许 MySQL 自动考虑这些字符,并且不需要使用任何特殊函数对其进行转义。