我试图更改我的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您 您的SQL语法有错误;检查对应的手册 你的MySQL服务器版本正确的语法使用在附近')LIMIT 1' 在第2行
答案 0 :(得分:1)
尝试以这种方式更改您的查询,我在订单中的最后一个prodid之后修改了以下内容,并且我在所有列名称之前设置了表的名称
$query = $this->select('link')
->from('shop_product_videos')
->where('shop_product_videos.brand=?', $brand)
->where('shop_product_videos.prodid=?', $prodid)
->orWhere('shop_product_videos.prodid=""')
->orWhere('shop_product_videos.prodid is null')
->order(new Zend_Db_Expr("FIELD(shop_product_videos.prodid='' OR shop_product_videos.prodid IS NULL, 1, 0), shop_product_videos.prodid"))
->limit(1)
;