本地准备的陈述:它们是如此有限?

时间:2012-06-25 19:11:59

标签: php mysql pdo prepared-statement

来自2006年的信息良好的blog post陈述了关于在PDO中使用原生预备陈述的这些事实:

  1. 本机预准备语句无法利用查询缓存,从而导致性能降低。
  2. 本机预准备语句无法执行某些类型的查询,例如“SHOW TABLES”。
  3. 本机预准备语句无法正确传达某些其他“SHOW”查询的列长度,从而导致结果出现乱码。
  4. 今天有多少仍然如此?

2 个答案:

答案 0 :(得分:3)

不,如果您使用的是最近的MySQL版本,则情况并非如此。至少在很大程度上。

  1. 准备好的语句使用查询缓存since MySQL 5.1.17

  2. 几乎所有SQL语句都可以作为预准备语句运行。你可以找到list in the MySQL docsSHOW TABLES特别不在该列表中,但老实说,您是否曾使用过PHP的SQL语句?

  3. 我对此一无所知,但我认为它是固定的。

  4. 不要忘记,准备好的语句的模拟是不是编码安全的,因此可能(取决于具体条件)仍然允许SQL注入。

答案 1 :(得分:3)

  1. falae。自MySQL 5.1.17 the query cache works with prepared statements
  2. 为什么你需要准备一份声明来制作一个SHOW TABLES?
  3. 你能举出一个消息来源吗?我个人没有任何问题