【发布时间】:2017-08-09 10:23:11
【问题描述】:
我正在尝试更改我的 SQL 查询:
SELECT link FROM shop_product_videos WHERE brand='Goddess' AND ( prodid='' OR prodid='' OR prodid IS NULL)
ORDER BY FIELD(prodid='' OR prodid IS NULL, 1, 0), prodid
LIMIT 1
这是我迄今为止尝试过的:
$query = $this->select('link')
->from('shop_product_videos')
->where('brand=?', $brand)
->where('prodid=?', $prodid)
->orWhere('prodid=""')
->orWhere('prodid is null')
->order(new Zend_Db_Expr("FIELD(prodid='' OR prodid IS NULL, 1, 0), prodid)"))
->limit(1)
;
return $this->getAdapter(false)->fetchAll($query);
但我不断收到错误:
发生错误
异常信息:
消息:SQLSTATE[42000]:语法错误或访问冲突:1064 You 您的 SQL 语法有错误;检查对应的手册 您的 MySQL 服务器版本,以便在 ') LIMIT 1' 附近使用正确的语法 在第 2 行
【问题讨论】:
-
var_dump($query) 看看 zend 查询生成器做了什么..
-
尝试把prodid IS NULL, 1, 0), prodid)末尾的)去掉
-
@nacho 但这样就结束了:
(prodid='' OR prodid IS NULL, 1, 0) -
@Zeljka 的输出不清楚。整个查询中是否缺少一个单元格?
-
@Rick Sanchez,我的意思是最后一个,第三个 prodid 之后的那个,所以整行将是 order(new Zend_Db_Expr("FIELD(prodid='' OR prodid IS NULL , 1, 0), prodid"))
标签: php mysql zend-framework