所以我写了这样的代码,但它没有用
$SQL = "UPDATE adverts SET active='0' WHERE enddate<NOW()";
$result = mysqli_query($con,$SQL);
在上面的代码'advert'中是我的表名,'enddate'是包含数据库中日期的列的位置
任何人都可以帮帮我吗?
答案 0 :(得分:1)
正如Anthony在评论中所述,最好通过转到PHPMyAdmin
- &gt;来检查您的查询是否在PHPMyAdmin
中有效。 SQL
- &gt; Run Query
。通过这种方式,您可以区分它是 MySQL错误还是 PHP错误。
UPDATE adverts SET active = 0 WHERE ( enddate < NOW() )
我已将有效'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.
}
答案 1 :(得分:-1)
你试过吗
UPDATE adverts SET active='0' WHERE enddate<DATE(NOW())
另外,它是广告还是广告?
或者您可以尝试使用CURDATE()
UPDATE adverts SET active='0' WHERE enddate<CURDATE()