Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

В БД есть таблица 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 версии.

Надіслати
Поділитися на інших сайтах


.../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 (титановый костыль). А мой костыль - деревянный, но и он работает, а большего от него и не требуется.

 

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.