【发布时间】:2012-05-16 10:54:47
【问题描述】:
PDO 具有选项PDO::ATTR_EMULATE_PREPARES,它控制是否应仅在 DB 不支持或始终不支持的情况下模拟准备好的语句。但是,它没有提到它是否总是默认模拟它们。
通常人们会假设只有在必要时才使用仿真,但由于它是 PHP,所以不能仅仅因为它是理智的而假设...
【问题讨论】:
-
谁能告诉我仿真是什么意思?它有多糟糕?
-
->prepare()调用期间不会进行错误检查,PDO 需要转义您的参数,而不是单独将它们传输到数据库。当您准备一条语句并执行多次时,它也不会从数据库可能能够执行的优化中受益。 -
@Shubham 在这种情况下,这意味着使用字符串转义而不是实际准备好的语句。转义 allows for SQL injection,而准备好的语句完全阻止它。
标签: php pdo prepared-statement