我一直想构建多数据库应用程序,但我仍然找不到任何关于如何去做的事情。
我想知道的是处理 SQLite 和 MySQL 查询的最佳方式。对于要运行的每个查询,我是否需要一个带有两个不同查询的 IF 语句?
或者有没有一种简单的方法可以将 MySQL 语句转换为 SQLite?
使用PHP 的 PDO。
您需要做的就是更改连接字符串,您可以连接到不同的数据库。只要您的 SQL 不是使用特定于特定数据库的函数编写的,它就可以与这些数据库一起使用:
CUBRID (PDO) — CUBRID Functions (PDO_CUBRID)
MS SQL Server (PDO) — Microsoft SQL Server and Sybase Functions (PDO_DBLIB)
Firebird/Interbase (PDO) — Firebird/Interbase Functions (PDO_FIREBIRD)
IBM (PDO) — IBM Functions (PDO_IBM)
Informix (PDO) — Informix Functions (PDO_INFORMIX)
MySQL (PDO) — MySQL Functions (PDO_MYSQL)
MS SQL Server (PDO) — Microsoft SQL Server Functions (PDO_SQLSRV)
Oracle (PDO) — Oracle Functions (PDO_OCI)
ODBC and DB2 (PDO) — ODBC and DB2 Functions (PDO_ODBC)
PostgreSQL (PDO) — PostgreSQL Functions (PDO_PGSQL)
SQLite (PDO) — SQLite Functions (PDO_SQLITE)
4D (PDO) — 4D Functions (PDO_4D)
它支持您想要的所有功能以及许多防止注入攻击的内置好东西等等。
http://php.net/manual/en/book.pdo.php http://www.php.net/manual/en/ref.pdo-sqlite.php http://www.php.net/manual/ zh/ref.pdo-mysql.php
听起来您可能正在寻找类似Doctrine ... PHP 的 ORM。
许多简单的查询在 SQLite 和 Mysql 中都可以正常运行,但是 PDO 不会修改您的查询,只是提供一种机制来连接到每个 DB 并发送这些查询。ORM 是一种将对象类型映射到数据库表并直接访问它们的方法。
在某些地方你仍然需要“if”语句,ORM 不会自动决定在哪里保存什么或自动知道在哪个数据库中找到你的数据。