Php MySQL:在SELECT中添加条件
我有一个巨大的选择,我需要作出一些条件 例如:Php MySQL:在SELECT中添加条件,php,mysql,select,conditional-statements,Php,Mysql,Select,Conditional Statements,我有一个巨大的选择,我需要作出一些条件 例如: 选择't`.'title`、't`.'price\u paid`、't`.'date\u creation`、't`.'date\u upload` 从'table_name'改为't` 其中`t`.`date\u creation`>='.$year.-'.$month.'-01“ 和't`.'date\u creation`MySQL在Select查询中嵌套“If” IF(条件、值(如果为真)、值(如果为假) 差不多 选择t标题, 如果(tda
选择't`.'title`、't`.'price\u paid`、't`.'date\u creation`、't`.'date\u upload`
从'table_name'改为't`
其中`t`.`date\u creation`>='.$year.-'.$month.'-01“
和't`.'date\u creation`<'.$year.'-'($month+1)。'-01“
我用PHP声明$year和$month的值,其余的都用MYSQL(如果需要,我有充分的理由可以详细说明)
我需要的是,如果上载日期与创建日期的间隔不同,则将上载日期设置为空(null或0),并将上载价格设置为空。如果你是12月,你会要求MySQL在高端搜索
2013-13-01
。使用实际的mysql日期数学:
SELECT ...
WHERE t_date_creation BETWEEN (now() - INTERVAL 1 MONTH) AND (now() + INTERVAL 1 MONTH)
对于您的查询,它将是一个更新查询:
UPDATE yourtable
SET date_upload = NULL, price = NULL
WHERE date_restriction_logic_here.
到目前为止,解决办法似乎是: ->MySQL在Select查询中嵌套“If” IF(条件、值(如果为真)、值(如果为假) 差不多 选择
t
标题
,
如果(t
date\u-creation
=“.$year.-.$month.-01”和t
date\u-upload
t
price\u paid
,“0”)作为price\u paid
,
t
创建日期
,
如果(t
date\u-creation
>=“.$year.-.$month.-01”和t
date\u-upload
,”)作为date\u-upload
从table\u name
ASt
其中t
date\u creation
>=“.$year.-.$month.-01”
和t
date\u creation
<“.$year.-”($month+1)。“-01”
其他解决方案似乎是控制流函数
当[比较\u值]然后结果[当[比较\u值]然后结果…]时的案例值[其他结果]结束
发现
能否在PHP中动态创建SQL语句并将变量传递给查询对象?让我们使用参数进行查询“”(这是SQL语法,不是PHP)。PHP端只需使用bindValue()添加预先计算的参数值。要使它们为空,您不能使用WHERE but CASE语句(如果不满足条件,则为NULL),请使用以避免。@Matt Busche当然可以,有什么想法吗?实际查询的结果是一个巨大的数组,我用它来构建CSV报告。我正在使用一些已经制作好的库来插入查询和structure@tadman谢谢你的提示,我还是很安全的,因为所有的东西都在一个框架内,在我们的数据中注入东西并不是那么容易,因为有一些层正好适合这种类型的东西:)日期很好。我将在那里使用SQL,但我需要涵盖上个月从1到年底的全部内容。更新在我的情况下不起作用。我进行查询,并将结果打印在CSV报告文件中,因此到目前为止没有保存在db中。其他建议?如果(条件、值如果为真、值如果为假)与我需要的最接近,我将在下面添加解决方案
UPDATE yourtable
SET date_upload = NULL, price = NULL
WHERE date_restriction_logic_here.