2012-07-23 5 views
2

PHP 응용 프로그램을 작성 중이며 MySQL 데이터베이스를 중심으로 사용자 등록 시간을 자동으로 기록하고 싶습니다.사용자 등록 시간을 얻으시겠습니까?

  • 어느 쪽이 좋을까요? PHP의 날짜 함수를 사용하거나 MySQL에 현재 타임 스탬프 옵션이 있습니다 (필자는 생각합니다).
  • MySQL이 더 정확하다면 어떻게 구현합니까? 테이블 구조는 무엇입니까?
  • PHP가 정확도면에서 더 우수하다면, 그 일을하는 가장 직접적인 방법은 무엇일까요?

도움 주셔서 감사합니다. 정확도 측면에서

INSERT INTO table_name (date_field) VALUE (now()) 

는, MySQL은 삽입시에 가장 가까운 수 있지만 PHP와 MySQL의 차이는 변화를하지 않도록 최소한의 :

답변

1

이것 다음 MYSQL 코드는 그것을 할 것입니다 .

+0

난 확실하지 먹으 렴의 가장 간단한 ... 나는 그래서 수동으로 구성 할 필요 없다 기본을 사용한다고 생각합니다. –

2

MySQL DateTime을 참조하십시오.

MySQL에서 UTC_TIMESTAMP()을 사용하는 것이 좋습니다. 그리고 나서 시간대를 사용하여 상당히 정확합니다.

mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0; 
    -> '2003-08-14 18:08:04', 20030814180804.000000 

당신이 날짜 형식을 다시 얻을 것이다 문자열로 사용하는 경우 숫자 셀렉터로 사용하는 경우, 당신은 숫자 값을 다시 얻을 수 있습니다.

+0

고마워, 나는 그것을 한 번 들여다보고 다시 돌아올 것이다. –

1

레코드를 삽입 할 때 UNIX_TIMESTAMP() MySQL 함수를 사용할 수 있습니다.

PHP와 MySQL 모두 시스템 시계에서 시간을 사용하므로 결과는 사용하는 것과 관계없이 동일해야합니다. 타임 스탬프는 UTC로 저장되기 때문에 사용자의 시간대로 쉽게 전환 할 수 있습니다.

IMO, (PHP 또는 MySQL 시간 사용) 차이는 없지만 개인적으로 INT 열에 등록 시간을 타임 스탬프로 저장합니다. 나는 순서대로를 답변 해 드리겠습니다

INSERT INTO `user` 
(id, username, registrationTime) 
VALUES 
(NULL, 'rgbc', UNIX_TIMESTAMP()); 
1

: 같은

삽입이 보일 수 있습니다.

  • 더 깨끗하고 효율적인 코드를 만들기 때문에 항상 MySQL의 시간 기능 (NOW())을 사용하는 것이 좋습니다. 성능 차이는 미미하지만 PHP의 date() 함수를 사용하여 변수를 설정 한 다음 나중에 쿼리에서 호출하는 것보다 INSERT 쿼리에서 NOW()를 사용하는 것이 더 간단합니다.

  • 당신이 찾는 정확성이 있다면, 데이터베이스에 InnoDB 엔진을 사용하십시오. 구조의 예는 id (int auto_increment), 이름 (tinytext), 암호 (tinytext), 소금 (tinytext), registerd_date (DATETIME)입니다. 암호 및 소금 열은 안전하고 해시 된 암호 (SHA512와 같은 것)를 사용하기위한 것입니다.

  • PHP가 제 생각에는 가장 쉽습니다. 가장 간단한 방법은 정규 등록 양식을 작성한 다음 NOW()를 사용하여 등록이 발생한 날짜와 시간을 기록하는 것입니다.

행운을 빌어 요,

데이비드

+0

reg_time의 기본값을 NOW()로 설정해야합니까? –

+0

기본값을 사용하려면 DATETIME이 허용하지 않으므로 사용할 TIMESTAMP 유형입니다. 그러나 그렇습니다, 가능합니다 – David

+0

좋아, 고마워, 나는 그것을 줄 것이다. –

관련 문제