0

現在、メンバー ログイン ページのデータベースに情報を保存する必要があるプロジェクトに取り組んでいます。現在、ユーザーが資格情報を入力した時間を保存する作業を行っています。「キー「プライマリ」の重複エントリ「0000-00-00 00:00:00」」がポップアップし続けますが、これは、時間が実際の時間として処理されない理由を除いてすべて理解しています...のセクションの下私が作業している私のコード...おそらく何かが間違っていますか? または、現在のタイムスタンプを呼び出すより良い方法はありますか?

    $mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE)
or die("Failed to connect");
if(isset($_POST['submit'])) {
    date_default_timezone_set('America/Phoenix');
    $username = mysql_real_escape_string($_POST['userlogin']); 
    $password = mysql_real_escape_string($_POST['userpassword']);
    $today = date("F j, Y, h:i:s A"); 
    $sql = "SELECT * FROM Member WHERE loginName = '".$username."' AND password = '".$password."'"; //checks for user in database
    //--password = SHA2(CONCAT('bar','paz'),512)";
    $result = $mysqli->query($sql) or die($mysqli->error); //shoots an error if something is wrong
    if($result->num_rows < 1) // if the username/password is incorrect then an error message appears
       {
        echo "Invalid username/password combination. Please try again.";
       }
    else
       {
        echo "Welcome."; //Successful
        $today = date("F j, Y, h:i:s A"); 
        header('Location: thankspage.html');
     $sql = " INSERT INTO Login (loginName,loginTime) 
       VALUES ('$username', '$today' ) "; // creates the login time.
    $result = $mysqli->query($sql) or die ($mysqli->error); // shoots an error if i did something wrong.
   }
}   
4

2 に答える 2

3

日時形式を変更する

$today = date("F j, Y, h:i:s A");

適切なものに

$today = date("Y-m-d H:i:s");

コードパッドのデモはこちら

または$today完全に捨てNOW()てMySQL側で使用します(タイムゾーン設定がWebサーバーと同じ場合)

INSERT INTO Login (loginName, loginTime) VALUES ('$username', NOW())
                                                              ^^^^^

余談ですが、クエリ文字列を補間する代わりに、準備されたステートメントmysqliを学習して使用することを既に検討しているため、SQL インジェクションの可能性が広くなります。

于 2013-11-04T04:05:39.140 に答える
0

Ok。ただし、日付列がtimestampタイプの場合。より簡単になり、現在のタイムゾーンに従って時間を表示する必要があります。dates日付列の場合、次のように設定します

  `dates` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

また、クエリを挿入または更新するたびに、を使用する必要がありますCURRENT_TIMESTAMP。仮定する

 INSERT INTO Login (loginName,loginTime) VALUES ('$username', CURRENT_TIMESTAMP)
于 2013-11-04T07:05:38.907 に答える