Jump to content
Sign in to follow this  
igon

[Решено] Таблица 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

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

 

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

У меня 

 

ocStore © 2009-2015 All Rights Reserved.
Version 1.5.4.1

 

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

Share this post


Link to post
Share on other sites

.../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 заодно уж проверьте.

Share this post


Link to post
Share on other sites

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

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

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

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

LEFT JOIN `" . DB_PREFIX . "order` o

Share this post


Link to post
Share on other sites

 

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

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

так не проще ?

LEFT JOIN `" . DB_PREFIX . "order` o

 

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

 

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

Share this post


Link to post
Share on other sites

не странно.

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.