【问题标题】:Order by Domain Extension Name using CodeIgniter Active Record Class使用 CodeIgniter Active Record 类按域扩展名排序
【发布时间】:2011-02-07 18:47:38
【问题描述】:
$extension = “SUBSTRING_INDEX(domain_name, ‘.’, -1)”;
$this->db->order_by($extension, “asc”); 

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

但是当我不使用 $this->db->order_by Active Record 类时它可以工作 比如这个: $this->db->query(“SELECT * FROM domain ORDER BY SUBSTRING_INDEX(domain_name, ‘.’, -1)”);

请任何人帮助我。谢谢。

【问题讨论】:

    标签: mysql codeigniter dns sql-order-by


    【解决方案1】:

    我相信您需要像这样扩展数据库活动记录库:http://codeigniter.com/wiki/Extending_Database_Drivers/

    向 order_by 添加另一个参数,例如 $escape=null,并使用它来防止 _protect_identifiers 在您的函数中运行。这将允许您以与现在可以使用 select 和 where 相同的方式使用未转义的 order by。

    【讨论】:

      【解决方案2】:

      因为: $extension = “SUBSTRING_INDEX(域名, '.', -1)”; $this->db->order_by($extension, “asc”);

      结果: SUBSTRING_INDEX(域名, `'`.`'`, `-1)`

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

      【讨论】:

        猜你喜欢
        • 2012-08-05
        • 1970-01-01
        • 2013-02-18
        • 2013-02-22
        • 2013-04-11
        • 1970-01-01
        • 2013-02-22
        • 1970-01-01
        • 2012-03-24
        相关资源
        最近更新 更多