(No version information available, might only be in Git)
SQL, принимаемый 4D — PDO и SQL 4D
4D строго реализует стандарт ANSI 89 и соблюдает его. Крайне рекомендуется изучить документацию по 4D SQL перед его использованием. Документация расположена по ссылке » http://doc.4d.com/. Ниже представлен список характеристик 4D SQL: он не полон, но может использоваться для составления общего представления.
Характеристики | Альтернативы | Примечания |
---|---|---|
INTEGER | Модифицируйте SQL для использования INT. | INT является поддерживаемым целочисленным типом в 4Dv12.0. |
CHAR | Используйте VARCHAR. | Не поддерживается в 4Dv12.0 |
UNION | Не поддерживается. Используйте несколько запросов. | Не поддерживается в 4Dv12.0 |
SELECT 1 + 1; | SELECT 1 + 1 FROM _USER_SCHEMAS; | FROM обязателен |
FLOAT | Преобразуйте значения FLOAT или STRING с помощью функций SQL 4D (CAST, ROUND, TRUNC или TRUNCATE) | Не поддерживается в текущей версии драйвера PDO_4D |
Строгая типизация | Убедитесь, что ваш запрос SQL или ваш код PHP задает данные того типа, который ожидается | Другими словами, нельзя вставить значение '1' (как строку) в строку типа INTEGER. |
PDO::execute($row)(): работает только если все поля таблицы имеют тип TEXT или VARCHAR | Используйте подготовленные запросы и используйте корректные типы. | Расширение PDO преобразует все значения переданные через execute() в строки и ожидает, что база данных воспримет их корректно. |
SELECT NULL FROM TABLE | Не используйте константу NULL. Извлекайте ее из таблицы. | Недопустимо использовать константу NULL в операторе SELECT |
SELECT * FROM TABLE WHERE 1 | Используйте WHERE 1 = 1 | В операторе WHERE недопустимо использовать константы |
SHOW TABLES | Используйте системные таблицы | Список таблиц, схемы, индексы и т.д. хранятся в следующих системных таблицах: _USER_TABLES, _USER_COLUMNS, _USER_INDEXES, _USER_CONSTRAINTS, _USER_IND_COLUMNS, _USER_CONS_COLUMNS и _USER_SCHEMAS. |
Разделитель структуры SQL | Используйте следующую функцию для защиты элементов SQL: function sqlEscapeElement(elem) { return '[' . str_replace(']',']]', $elem) . ']'; } | Для экранирования имен элементов SQL (таблиц, полей, пользователей, групп, схем, первичных ключей и т.д.), поместите их в квадратные скобки, а закрывающие скобки должна быть задвоены. |