mysql - Codeigniter order_by 与 CONVERT

标签 mysql codeigniter sql-order-by

我必须使用 codeIgniter 通过 CONVERT(`codExtern`, SIGNED) 来订购选择。 如果我像这样使用它:

$this->db->order_by(" CONVERT(`codExtern`, SIGNED) ");

codeigniter 将 SIGNED 单词放在 `-s 之间,例如:

CONVERT(codExtern, `INTEGER` )

我怎样才能让它发挥作用?

最佳答案

不幸的是,您无法使用参数 like in the select() method 禁用标识符保护。 CI 将调用 CI_DB_driver::_protect_identifiers输入 if it has a , in it .

目前,如果您设置所谓的“私有(private)”属性$_protect_identifiers,则可以解决此问题。在调用 order_by 方法之前在您的 $this->db 上设置 false ,这样当它运行时它会跳过这个,然后将其翻转回来(例如,它有助于解决有问题的列/表名称)。这可能不是一个真正的好主意,在未来的 CI 版本中,此属性可能会变得真正私有(private),并且您的代码将会损坏。

不幸的是,数据库库无法扩展,但是如果您不怕修改system下的文件,您可以在order_by()方法中创建一个异常,就像“随机排序()”got one.

关于mysql - Codeigniter order_by 与 CONVERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12816020/

相关文章:

php - 循环中的多次插入 Codeigniter

mysql - 如何在同一列中创建2个order by

mysql - SQL 按大小写排序

codeigniter - CI-Merchant & SagePay - 似乎无法让它做出任何回应

java - 没有在 ResultSet 中获取 MySQL SELECT LPAD()

php - 在多个浏览器上同步用户输入

php - MySQL 连接所需的默认端口

php - 在 CodeIgniter 中设置状态

sql - 手动排序 concat 文本(不是 ASC 或 DESC)

php - 简单的网络通用本地化/翻译后端(使用 mysql)?