У меня есть некоторый код PHP, который я пытаюсь перенести с MySQL на MonetDB. Код использует ODBC, поэтому теоретически это должен быть случай изменения драйвера.
Вот пример SQL, сгенерированного PHP и отправленного в базу данных:
SELECT mycolumn FROM foo WHERE bar="123";
К сожалению, MonetDB использует другое соглашение о цитировании для MySQL: имена столбцов должны быть заключены в двойные кавычки, а значения в одинарные кавычки. Так что можно ожидать:
SELECT "mycolumn" FROM foo WHERE bar='123';
Вместо того, чтобы пройти тысячи строк кода PHP, исправляя все это, есть ли простой способ решить проблему? Может ли ODBC волшебным образом исправить цитату, или, возможно, MonetDB имеет опцию конфигурации, позволяющую это сделать?
Для этой проблемы нет никаких магических исправлений или флагов, только тяжелая работа или грязные хаки. Обратите внимание, что имена столбцов (и таблиц) необходимо заключать в кавычки, только если они содержат зарезервированный символ или состоят из зарезервированных слов. Следовательно, изменение строковых кавычек может быть достаточно. Надлежащим способом генерации этих запросов в ODBC будут подготовленные операторы, где кавычки действительно добавляются автоматически. Однако я не уверен, что драйвер ODBC MonetDB будет делать в этом случае при использовании из PHP.
Других решений пока нет …