2013-07-19 100 views

回答

1

逸出做正确准备的SQL语句。在MySQL中没有相应的功能,因为当它遇到该层时,它首先应该应该已经被转义。

使用mysqli_real_escape_string也是一个标志,你应该使用bind_param方法而不是这种超级低级别调用。

+1

'mysqli_real_escape_string'是**不是**'不正确地做某事'。准备好的语句是保护SQL的一种方法,但它们并非银弹。准备好的语句在许多用途中具有性能开销,并且不支持一些有用的语法变体。 'mysqli_real_eascape_string'是转义SQL输入的有效方法。重要的是确保你的SQL的安全。坚持准备好的陈述是唯一“正确”的方式就是懒惰的想法。 – 2013-07-19 15:43:11

+0

@Mike阿门!如果应用正确,'* _real_escape_string'工作得很好* – deceze

+1

我在这里看到的糟糕的代码示例的数量表明大多数人不明白如何正确使用任何'escape_string'函数,或者更重要的是,一致。占位符的性能开销是多少?它甚至可衡量吗?如果是这样,为什么PHP是习惯于调用低级别转义函数的少数几种语言之一?如果PDO有性能问题,那么它应该被修复。鼓励人们在没有占位符的情况下逃避自己的数据不会有帮助。 – tadman