我正在使用PDO创建一个很小的activerecord库,并且计划支持 MySQL Sqlite PgSQL

我的问题是如何确定查询字符串可用于所有适配器?通常会有一些带有连接等的CRUD语句。是否有我可以遵循的适用于所有这些的标准?

谢谢
/托比亚斯

编辑:感谢您的所有回答,但我的问题更多是关于SQL'语法'两者之间的区别。

最佳答案

如果您想编写自己的数据库层,建议您:

  • (如果尚未使用),请使用占位符。他们也增加了安全性。
  • 使用具有值类型的bindParam/bindValue(例如,在SQLite中不存在BOOLEANS,但如果与PARAM_BOOL绑定(bind)则可以使用)...
  • 使用MySQL中的存储过程,在PostgreSQL中创建匹配的名称,并使用sqliteCreateAggregate/sqliteCreateFunction在SQLite中定义它们。
  • 在PHP中进行所有参数检查,因为SQLite不会执行任何操作(例如,验证日期变量)...
  • 使用InnoDB for MySQL获取事务。

  • 注意:通过支持这些非常不同的RDBM,您可以将数据库降级为仅数据存储。请记住,SQLite非常有限。它没有从数字/字符串保存的 native 数据类型。例如。它缺少日期处理和时间间隔,等等。所有这三个数据库都支持事务,当数据库外部维护完整性时,这对于数据完整性至关重要。

    编辑:删除了MySQL触发器的提及,该触发器适用于5.0。

    关于php - mysql,sqlite和pgsql之间的语法差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4296658/

    10-14 10:20
    查看更多