Порядок по расширению доменного имени с использованием класса активной записи CodeIgniter - PullRequest
0 голосов
/ 14 апреля 2010
$extension = “SUBSTRING_INDEX(domain_name, ‘.’, -1)”;
$this->db->order_by($extension, “asc”); 

Там написано: У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с «asc LIMIT 50» в строке 44

Но он работает, когда я не использовал класс активной записи $ this-> db-> order_by такой как этот: $ this-> db-> query («ВЫБЕРИТЕ * ОТ домена ЗАКАЗАТЬ ПО SUBSTRING_INDEX (имя_домена,‘. ’, -1)»);

Кто-нибудь, пожалуйста, помогите мне. Благодарю.

Ответы [ 2 ]

1 голос
/ 14 апреля 2010

Полагаю, вам нужно расширить библиотеку активных записей базы данных следующим образом: http://codeigniter.com/wiki/Extending_Database_Drivers/

Добавьте еще один аргумент, например $ escape = null, в order_by и используйте его, чтобы запретить запуск _protect_identifiers в вашей функции. Это позволит вам использовать неэкранированный заказ таким же образом, как выберите и где можно использовать сейчас.

0 голосов
/ 15 апреля 2010

С: $ extension = «SUBSTRING_INDEX (имя_домена,‘. ’, -1)»; $ this-> db-> order_by (расширение $, «asc»);

Результат к: SUBSTRING_INDEX (имя_домена, `'` .`'`, `-1)`

Я редактирую: системы / базы данных / драйвера / MySQL / mysql_driver.php путем изменения: var $ _escape_char = '`'; в var $ _escape_char = '';

...