使用PREPARE命令(SQL)vs PDO或mysqli函数

时间:2011-02-17 13:06:15

标签: php mysql pdo mysqli prepared-statement

我使用PHP开发Web应用程序并使用MySQL作为数据库。我试图了解准备好的陈述的用法,我只是采取了我的第一步。

据我了解,准备好的陈述主要是:

  1. 提高查询效率(预解析,缓存执行计划,客户端和服务器之间的二进制数据传输)

  2. 确保免受代码注入攻击(对此不完全清楚,但我认为我有基本的了解)

  3. (可能还有其他用途)

    问题是,

    为什么不直接使用MySQL提供的PREPARE语句并预先制作准备好的语句,然后在PHP应用程序中使用PDO或mysqli?更好的是,使用这些预处理语句创建存储过程并仅向PHP程序员公开那些?

    这样,数据库程序员就可以分离/处理正确查询的实际负担。 PHP程序员可以完全专注于应用程序的实现和优化。

    我没有预见到我将很快使用的数据库中的任何更改。 MySQL满足所有要求。但为了保持我的应用程序清洁和数据库不可知,我可以使用PDO。或坚持程序编码并做mysqli

    这是一个有效/经过实践检验的方法来构建应用程序吗?

    由于

1 个答案:

答案 0 :(得分:1)

PREPARE语句的结果有些特殊,无法返回给用户。您可以通过在MySQL中存储变量来使用它。但是,那不是标准。 MySQL为您提供API,以便PDO驱动程序利用它们,您可以编写与DB无关的代码。我完全没有理由不这样做。在使用PDO的许多事情中,我特别喜欢DBTNG(Drupal 7 DB层旋转),因为我参与编写了它:)和idiorm