私が取り組んでいる PHP プロジェクトでは、複数のデータベース プラットフォームをサポートするためにいくつかの DAL 拡張機能を作成する必要があります。これに関する主な落とし穴は、プラットフォームが異なれば構文も異なることです。注目すべき MySQL と MSSQL はまったく異なります。
これに対する最善の解決策は何ですか?
以下は、私たちが話し合ったいくつかの例です。
クラスベースの SQL 構築
これには、SQL クエリを少しずつ構築できるクラスを作成することが含まれます。例えば:
$stmt = new SQL_Stmt('mysql');
$stmt->set_type('select');
$stmt->set_columns('*');
$stmt->set_where(array('id' => 4));
$stmt->set_order('id', 'desc');
$stmt->set_limit(0, 30);
$stmt->exec();
ただし、単一のクエリにはかなりの数の行が含まれます。
SQL 構文の再フォーマット
このオプションははるかにクリーンです。SQL コードを読み取り、入力言語と出力言語に基づいて再フォーマットします。ただし、解析に関する限り、これははるかに遅いソリューションであることがわかります。