我正在使用 php 和 mysql 开发一个网站,我真的是这个领域的初学者。现在我被困在一个地方,我必须检查当前日期是否比我数据库中的日期新
所以我写了这样的代码,但它不工作
$SQL = "UPDATE adverts SET active='0' WHERE enddate<NOW()";
$result = mysqli_query($con,$SQL);
在上面的代码中,“广告”是我的表名,“结束日期”是数据库中包含日期的列
有人可以帮帮我吗?
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
您可以使用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.
}
你试过了吗
UPDATE adverts SET active='0' WHERE enddate<DATE(NOW())
还有,是广告还是广告?
或者您可以尝试使用 CURDATE()
UPDATE adverts SET active='0' WHERE enddate<CURDATE()