Перейти к содержанию
igon

[Решено] Таблица order и ORDER BY

Рекомендуемые сообщения

В БД есть таблица order и используется ключевое слово ORDER BY.

 

Если DB_PREFIX не пустой, проблем не возникает. 

 

А вот если пустой, в строке типа 

LEFT JOIN " . DB_PREFIX . "order o

будет синтаксическая ошибка, поскольку таблица названа ключевым словом.

 

А ведь сколько раз уже было сказано: низзя так, НИЗЗЯ!!!

 

Пришлось "изгаляться":

LEFT JOIN " . DB_PREFIX . (DB_PREFIX ? "order" : "`order`") . " o

Еще один костыль?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Больше конкретики не помешало бы.

В ocStore v15512 и Opencart v2011 в `admin/model/*` и `catalog/model/*` все обращения к таблице "order" экранированы.

Произошло это ещё во времена примерно 1.5.1.3 версии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня 

 

ocStore © 2009-2015 All Rights Reserved.
Version 1.5.4.1

 

Версия вполне свежая, но с проблемой столкнулся.  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.../opencart/DISTR$ ls -l oc*1.5.4*
-rw-r--r-- 1 rb rb 8314178 Jul 24  2013 ocStore-1.5.4.1.1.zip
-rw-r--r-- 1 rb rb 8282720 Jul 28  2013 ocStore-1.5.4.1.2.zip
-rw-r--r-- 1 rb rb 8176117 Apr 10  2013 ocstore_v1.5.4.1.zip

.../opencart/DISTR$ ls -lh oc*1.5.4*
-rw-r--r-- 1 rb rb 8.0M Jul 24  2013 ocStore-1.5.4.1.1.zip
-rw-r--r-- 1 rb rb 7.9M Jul 28  2013 ocStore-1.5.4.1.2.zip
-rw-r--r-- 1 rb rb 7.8M Apr 10  2013 ocstore_v1.5.4.1.zip

.../opencart/DISTR$ find . -name "oc*1.5.4*" -type f -print0 | xargs -0 md5sum
c92c4ea9490ada032fbbd88f2d4ceb10  ./ocstore_v1.5.4.1.zip
36fa985bd2b757d704c7e9b4ea0f0bc9  ./ocStore-1.5.4.1.2.zip
160799195c1c0daddde84aa1d0a51219  ./ocStore-1.5.4.1.1.zip
Проверил все три. Строки `"order ` (в начале двойная кавычка, в конце пробел) не нашёл нигде. Везде эта таблица экранирована. Для проверки привожу md5sum всех архивов.

Сравнивайте свои копии с оригиналами, мойте руки перед едой, семь раз отмерь, один отрежь...

Кстати, response.php заодно уж проверьте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да, ещё в 1.5.4 пофиксили

Пришлось "изгаляться":

LEFT JOIN " . DB_PREFIX . (DB_PREFIX ? "order" : "`order`") . " o
Еще один костыль?

странная логика
так не проще ?

LEFT JOIN `" . DB_PREFIX . "order` o

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

да, ещё в 1.5.4 пофиксили

странная логика

так не проще ?

LEFT JOIN `" . DB_PREFIX . "order` o

 

Да, проще. И элегантнее. Поэтому Ваш вариант и используется в официальной фиксе для экранирования таблицы order (титановый костыль). А мой костыль - деревянный, но и он работает, а большего от него и не требуется.

 

Гораздо более странно, что изначально было допущено именование таблицы ключевым словом. Разве нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не странно.

не бывает программ без ошибок )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это своих не бывает. А чужих, "странных" - сколько угодно  :-D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.