使用CodeIgniter Active Record Class按域扩展名称排序

时间:2010-04-14 06:31:20

标签: mysql codeigniter dns sql-order-by

$extension = “SUBSTRING_INDEX(domain_name, ‘.’, -1)”;
$this->db->order_by($extension, “asc”); 

它说: 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第44行的'asc LIMIT 50'附近使用正确的语法

但是当我没有使用$ this-> db-> order_by Active Record Class时它正在工作 比如这个: $ this-> db-> query(“SELECT * FROM domain ORDER BY SUBSTRING_INDEX(domain_name,'。', - 1)”);

任何人都请帮助我。谢谢。

2 个答案:

答案 0 :(得分:1)

我相信您需要扩展数据库活动记录库,如下所示:http://codeigniter.com/wiki/Extending_Database_Drivers/

将另一个参数(如$ escape = null)添加到order_by,并使用它来阻止_protect_identifiers在您的函数中运行。这将允许您以与选择和现在可以使用的相同的方式使用未转义的顺序。

答案 1 :(得分:0)

自: $ extension =“SUBSTRING_INDEX(domain_name,'。', - 1)”; $ this-> db-> order_by($ extension,“asc”);

结果: SUBSTRING_INDEX(domain_name,```。`'`,` - 1)`

我编辑: 系统/数据库/驱动程序/ MySQL的/ mysql_driver.php 通过改变: var $ _escape_char ='`'; 至 var $ _escape_char ='';