В проекте 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 и переформатировать его на основе языков ввода и вывода. Однако я вижу, что это гораздо более медленное решение, насколько это возможно.