php - Zend DB 中带有 'like' 子句的 Order 子句

标签 php zend-framework mysql-error-1054

查询:

select * from table_name ORDER BY name like 'C%' DESC;

此查询在 MySql 中运行良好,但我无法使用 Zend DB 构建查询。 执行时出现错误。

PHP 数据库代码:

$result = $this->getDefaultAdapter() ->选择() ->from($this->_name,array('*')) ->order("name like 'C%' DESC") ->查询() ->获取全部();

错误:

Column not found: 1054 Unknown column 'name like 'C%'' in 'order clause' 

提前致谢

最佳答案

Zend_Db_Select 尝试将字符串定界为列名,但如果您传递类型为 Zend_Db_Expr 的对象而不是字符串,它会跳过此操作:

->order(new Zend_Db_Expr("name like 'C%' DESC"))->

还有一个未记录的快捷方式:列分隔函数假定任何包含括号的字符串很可能是一个表达式,而不仅仅是一个列名。所以下面的也行:

->order( "(name like 'C%' DESC)" )->

关于php - Zend DB 中带有 'like' 子句的 Order 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7117890/

相关文章:

php - 基于页面 ID 的 Wordpress 条件侧边栏部分

php - PHP/MySQL 插入问题

PHPMailer - SSL3_GET_SERVER_CERTIFICATE :certificate verify failed

php - 将 netbeans 和 PHP 从 Win 迁移到 Ubuntu - 什么目录结构?

php - Eclipse PDT + 代码完成根本不起作用

mysql - 使用联接、分组依据和全文的 where 子句中的未知列 xxx

php - 以下查询有什么问题

MySQL 触发器 - 使用从另一个表中选择的值更新表

mysql - 查询 : count multiple aggregates per item

php - Zend 框架 : Can i just get GET params?