2017-02-02 81 views
-1
$datesql='UPDATE products set past=1 where " '.$row['valid_date'].' " > CURDATE()'; 
mysql_query($datesql); 

上述查询有什么问题?它没有检查条件就将“过去”设置为1。我怎样才能改进这个代码?PHP日期验证和比较

+0

是什么$行[ 'valid_date']? 。列名或值?它应该是列名 –

+0

从表'产品'我想比较当前日期的数组变量。 – SUNIL

+0

是的,它是一个列名称 – SUNIL

回答

0

没有足够的信息。什么样的数据存储$ row ['valid_date']?时间戳?

无论如何,不​​知道你想得到什么,但通常如果值大于CURDATE(),它将是过去= 0。

,那么正确的方法是:

'UPDATE products set past=1 where " '.$row['valid_date'].' " < CURDATE()'; 

我的意思是,如果该日期比当前,更是在未来,所以通常将成为过去= 0,否则会过去,所以过去= 1

但是,正如约定,可能是你使用的是不同的。

还有一个非常重要的题外话注:请求mysql_query()在PHP 7

+0

这不是一个答案,这是一个评论,应该写成一个。 –

+0

也许你是对的,我的假设答案(由于缺乏信息)是:你是这样做的。 (只是添加它作为答案) –

0

辗转试试这个,

$var1=$row["valid_date"]; 
$datesql="UPDATE `products` set `past`=1 where $var1 > CURDATE()";   
$res=mysql_query($datesql); 

希望这将解决您的问题。

+0

号不工作 – SUNIL

+0

切换显示错误在PHP和检查 –

+1

@SUNIL - 任何扩展在_“不工作”_? –

0

试试这个,

$datesql="UPDATE products set past=1 where ".$row['valid_date']." > CURDATE()"; 
mysql_query($datesql); 

我认为这应该工作当且仅当$行[ 'valid_date']是表中列的名称。

如果不是一次,请回显您的查询,然后尝试在您的mysql浏览器上执行。

0

如果你的列是日期时间或日期,下面的代码可以帮助你

$datesql='UPDATE products set past=1 where '.$row['valid_date'].' > CURDATE()';