しばらくの間、マルチデータベース アプリを構築したいと思っていましたが、その方法についてはまだ何も見つかりません。
私が知りたいのは、SQLite と MySQL のクエリを処理する最善の方法です。実行するクエリごとに 2 つの異なるクエリを含む 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)
必要なすべての機能をサポートするだけでなく、インジェクション攻撃を防ぐ多くの組み込み機能やその他の機能もサポートしています。
編集:eldbizが提案する、さらに読むためのいくつかの素敵なリンク
http://php.net/manual/en/book.pdo.php http://www.php.net/manual/en/ref.pdo-sqlite.php http://www.php.net/manual/ en/ref.pdo-mysql.php
Doctrineのようなものを探しているように思えます... PHP の ORM です。
多くの単純なクエリは SQLite と Mysql の両方で正常に実行されますが、PDO はクエリを変更せず、各 DB に接続してそれらのクエリを送信するメカニズムを提供するだけです。ORM は、オブジェクト タイプをデータベース テーブルにマッピングし、それらに直接アクセスする方法です。
いくつかの場所ではまだ「if」ステートメントが必要です.ORMは、何をどこに保持するかを自動的に決定したり、データを検索するデータベースを自動的に認識したりしません.