2010-01-04 8 views
0

고객이 온라인 상점을 체크 아웃 할 때 order_date 필드에 자동으로 날짜를 추가하려고합니다.PHP/MySQL에서 날짜를 추가하는 방법은 무엇입니까?

가장 좋은 방법은 무엇입니까?

배달 데이터와 지불 날짜 같은 다른 필드가 같은 표에 있습니다.

cutomer 제출시 날짜가 추가되도록 숨겨진 필드를 추가하는 것이 좋습니다.

하지만 어떻게해야할지 모르겠습니다.

누구나 제게 더 좋은 방법을 제안 할 수 있습니까?

답변

5

아니요, 숨겨진 양식 필드는 필요하지 않습니다. 이 작업은 MySQL에서 직접 수행 할 수 있습니다.

order_date 필드가 DATE라고 가정합니다. DATETIME 또는 TIMESTAMP, 다음 순서 기록을 삽입하여 SQL에서, 단순히 order_date의 값으로 NOW()을 넣어 :

INSERT INTO orders (x,y,z,order_date) VALUES ('x','y','z',NOW()); 
+1

동의합니다. SQL에 NOW() 함수를 추가하면보다 안전하고 신뢰할 수 있습니다. 숨겨진 양식 필드를 사용하면 악의적 인 사용자가이 값을 다른 것으로 변경하여 온라인 상점을 악용 할 수 있습니다. 사용자 입력을 신뢰하지 마십시오. p –

+0

게다가 클라이언트 측 날짜를 신뢰하지 마십시오. –

0

을 주문 기록을 확정 업데이트 문에서이 같은 수행

update order set ....., order_date = now() where ... 

어쨌든 클라이언트 측 날짜에 의존하기를 원하지 않습니다. 그것은 꺼져있을 수도 있고 시간대를 생각할 수도 있습니다. 시스템에 단일 날짜 소스가 필요하며 데이터베이스 또는 서버 측 코드 계층 (PHP 또는 사용자)이 있어야합니다.

0

고객이 주문할 때 TIMESTAMP 열을 사용하여 주문시기를 추적하거나 주문을 데이터베이스에 저장할 수 있습니다. 같은 뭔가 :

ALTER TABLE sales_order ADD COLUMN date_placed TIMESTAMP DEFAULT CURRENT_TIMESTAMP;

기본 CURRENT_TIMESTAMP가 이후의 업데이트에 행이 생성 될 때 현재 시간 가득하지만,되지 않습니다. 기본 CURRENT_TIMESTAMP 절과 함께

http://dev.mysql.com/doc/refman/5.0/en/timestamp.html

을없이 UPDATE 절에서 열은 디폴트 값의 현재 타임 스탬프를 가지고 있지만 자동으로 업데이트 되지 않습니다 : 더에 대한 문서를 참조하십시오.

+0

음, OP는 생성 날짜가 아닌 체크 아웃 날짜를 저장하려고합니다. –

+0

다소 모호합니다. OP는 결제시 order_date를 기록한 것입니다. 즉, 주문이 접수되었을 때입니다. – leepowers

관련 문제