0

我正在使用 php 和 mysql 开发一个网站,我真的是这个领域的初学者。现在我被困在一个地方,我必须检查当前日期是否比我数据库中的日期新

所以我写了这样的代码,但它不工作

$SQL = "UPDATE adverts SET active='0' WHERE enddate<NOW()";
$result = mysqli_query($con,$SQL);

在上面的代码中,“广告”是我的表名,“结束日期”是数据库中包含日期的列

有人可以帮帮我吗?

4

2 回答 2

1

PHPMyAdmin正如 Anthony 在评论中所描述的,通过转到PHPMyAdmin-> SQL->来检查您的查询是否正常工作是个好主意Run Query。这样您就可以区分它是MySQL Error还是PHP Error

 UPDATE adverts SET active = 0 WHERE ( enddate < NOW() ) 

我将 active '0' 设置为 0,仅仅是因为我相信它会是一个Integer字段 - 其次,您的enddate:

它是一个date领域还是一个datetime领域?见下文:

SELECT NOW(); // You will get 2010-12-09 17:10:18
SELECT CURDATE(); // You will get 2010-12-09

资料来源:MySQL Curdate() 与 now()

您可以使用affected_rows()来查看您的查询是否有效,但不符合任何条件

$sql = "UPDATE adverts SET active = 0 WHERE ( enddate < NOW() )";
$queried = mysqli_query( $con, $sql );
if ( mysqli_affected_rows( $con ) >= 1 ) {
     //We know some rows were effected.
}
于 2013-10-06T10:49:13.893 回答
-1

你试过了吗

UPDATE adverts SET active='0' WHERE enddate<DATE(NOW()) 

还有,是广告还是广告?

或者您可以尝试使用 CURDATE()

UPDATE adverts SET active='0' WHERE enddate<CURDATE() 
于 2013-10-06T10:43:44.413 回答