0

私はphpとmysqlを使用してWebサイトを開発していますが、この分野では本当に初心者です..現在の日付がデータベースの日付よりも新しいことを確認する必要がある場所で立ち往生しています

だから私はこのようなコードを書いたが、うまくいかない

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

上記のコードの「advert」はテーブル名で、「enddate」はデータベース内の日付を含む列の場所です

誰でも私を助けてもらえますか?

4

2 に答える 2

1

Anthony がコメントで説明したように、-> ->に移動して、クエリがPHPMyAdminまったく機能しているかどうかを確認することをお勧めします。このようにして、それがMySQL エラーPHP エラーかを区別できます。PHPMyAdminSQLRun Query

 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

出典: 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 に答える