0
<?php
define('INCLUDE_CHECK',true);
error_reporting(0);
session_name('tzLogin');
session_start();
$user = $_SESSION['name'];

if($user or die('Please login to continue')) {      

   mysql_connect("localhost","root","password");
   mysql_select_db('db_account');
   require_once 'Functions/Import.php';



   $l = isset ( $_GET [ 'l' ] ) ? $_GET [ 'l' ] : null ;


   if ( ! is_null ( $l ) ) {
$gd= mysql_query("SELECT * FROM t_account WHERE name='$user' AND (now() - INTERVAL 6 HOUR > lastvoted)");

          if($gd or die("Come back later you still have time left to vote"))
          {
$qry = "UPDATE t_account SET `vo` = `vo` + 1, `lastvoted` = now() WHERE name='$user'";
$result = @mysql_query($qry);
}
else {

}
          header ( 'Location: ' . base64_decode ( $l ) , true , 301 ) ;

          exit ;

    }

        }
?>

必要な結果が得られません。

うーん、あなたが私に言ったことを試してみて、この方法でコードを作成しました

ただし、「後で戻ってきてください」というメッセージを表示する代わりに、クエリが実行されます

:( 私を助けてください

4

1 に答える 1

0

あなたのクエリは完全に間違っています。date()MySQL では、PHP のように日付値を文字列に「フォーマット」しません。MySQLdate()は datetime 値の日付部分を抽出し、文字列として返します。

date('2013-04-21 12:00:00') -> '2013-04-21'

そのように php と mysql の日付ロジックを混在させないでください。MySQL は、およびその他のさまざまな関数を介しnow()て、「現在」の日付を生成することができます。CUR_DATE

SELECT ... WHERE (now() - INTERVAL 6 HOUR > lastvoted)

UPDATE ... `lastvoted` = now()

は、あなたが必要とすることすべてです。

于 2013-04-21T17:57:49.813 に答える