使用PHP的PDO接口切换数据库引擎时处理MySQL反引号

Lev*_*ith 5 php mysql pdo

  1. 我目前正在开发一个使用MySQL数据库作为其后端的PHP应用程序
  2. 我的所有查询都包含用于转义字段名称的反引号.这样我可以在查询中使用"密码"等字段而不会导致问题(参见示例)
  3. 我知道关系数据库引擎之间的反引号并不通用(例如,SQLite使用双引号)
  4. 我的php应用程序中的所有查询都是使用PHP的PDO接口执行的

我的问题是:如果我想切换数据库引擎,比如从MySQL到SQLite,我需要做些什么才能处理所有查询中的反引号?我真的不想要通过我的所有代码并更改/删除反引号.有什么建议?我是否在最佳实践的范围内做错了什么?

示例查询:

SELECT
   `username`,
   `password`,
   `email_address`
FROM
   `users`
WHERE
   `id` = '1'
Run Code Online (Sandbox Code Playgroud)

Álv*_*lez 4

实际上,password并不需要引用...它甚至不是保留字: http: //dev.mysql.com/doc/refman/5.1/en/reserved-words.html

恕我直言,您可以采取的最佳方法是:

  1. 不要在标识符中使用保留字。
  2. 从当前代码中删除引号;对于任何像样的编辑器来说,这都是 2 分钟的任务(除非您还使用反引号运算符)

不管怎样,切换到另一个数据库引擎是一回事;而另一种是。构建一个独立于数据库的应用程序是一个完全不同的问题。