php - 关于一条sql语句的问题

查看:102
本文介绍了php - 关于一条sql语句的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

先上码:大致浏览一遍就好,重点请看文字。
$price = M('hotel_price')
->where("room_type = '{$room_type}' and status=1 and start_date <= '{$date}' and site_hotel_price.end_date >= '{$date}'")
->field("(case when '{$week}' in (weekend) then price_weekend else price_weekdays end) as price")
->find();


这是在thinkphp中的一条sql查询,我努力解释一下,望大神挑出重点耐心看看:

首先,我的想法是想找出房型的当日价格,价格分周末价格和非周末价格,周末是自定义的(也就是可以设置任意星期几为周末,在表中的字段为weekend,字段类型为varchar,也就是这条sql中in(weekend)中的weekend),这里通过判断$week(星期几)是周末还是非周末,但是in (weekend)这里出了问题,没有得到想要的结果。

测试发现,好像是sql编译之后in(weekend)变成了in('1,2,3')而不是in(1,2,3)(假设这里weekend为字符串'1,2,3'也就是设置的星期1到星期3为周末)。那么现在如何修改sql才能达到in(1,2,3)的结果,而不是in('1,2,3')呢,还是根本就不能通过mysql做到?只能通过php操作数据了?

诚心求教大神~~~~有什么我没说明白的地方请评论,我尽量第一时间回答。

解决方案

这只能php整合数据,因为你给的是一个字符串,不是mysql要的数据格式,所以mysql没法弄

这篇关于php - 关于一条sql语句的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆