MySQL准备与PHP mysqli准备

时间:2012-06-19 12:32:43

标签: php mysql mysqli

我想知道MySQL PREPARE / EXECUTE子句和PHP mysqli准备/执行方法之间是否有任何区别?在预防注射方面是好还是坏?

我很好奇,因为我正在编写一些数据库存储过程,在一个中,表和属性在编译时是未知的。我可以将数据写为静态,但查询有点复杂,它只会使程序膨胀很多控制逻辑。它让我想到了这一点,我只是想知道,当我只需要一个简单的语句时,我会用动态SQL编写一个简短的过程,或者只是准备并用PHP绑定它是否更好。

如果这是重复,我也很抱歉,当然欢迎链接到已经回答的SO问题。但是,我一般都看谷歌,并没有真正找到特定答案的方式。

2 个答案:

答案 0 :(得分:3)

PHP mysqli是PHP中的一个层,围绕MySQL的准备/执行功能。

只要将来自用户的所有内容都填充到绑定变量中,两者都将使您免于SQL注入。

预处理语句,无论采用哪种方式处理,都可以实现更高效的高容量操作。在MySQL中,与像Oracle这样的高价DBMS相比,效率提升是适度的,但它仍然值得一试。

如果您需要将表名作为"变量"在您的应用中,没关系,您不能将表名视为绑定变量。因此,您需要对任何导致构造这些表名的用户输入完全偏执。

答案 1 :(得分:0)

当我回答2020年时,我了解到您应该使用PDO(而不是mysqli)来准备和绑定或绑定执行。它将被保护免受注射并且更加安全。