Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL:在SELECT中添加条件_Php_Mysql_Select_Conditional Statements - Fatal编程技术网

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
AS
t
其中
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.