PHP MySQL 삽입의 날짜 형식 불일치
PHP를 사용하여 MySQL 데이터베이스에 날짜를 삽입하려고 하면 다음과 같은 오류가 발생할 수 있습니다. 형식이 일치하지 않습니다. 널리 사용되는 jQuery 날짜 선택기 형식인 "08/25/2012"는 MySQL이 지원하는 날짜 형식과 충돌합니다.
이 문제를 해결하려면 MySQL의 날짜 리터럴 요구 사항을 이해하는 것이 중요합니다.
- 문자열 형식: YYYY-MM-DD 또는 YY-MM-DD(선택 사항 포함) 구분 기호. 예: '2012-12-31', '2012/12/31', '2012^12^31'.
-
구분자가 없는 문자열 형식: YYYYMMDD 또는 YYMMDD. 예: '20070523', '070523'('2007-05-23'으로 해석됨).
-
숫자 형식: YYYYMMDD 또는 YYMMDD. 예: 19830905, 830905('1983-09-05'로 해석됨).
"08/25/2012" 형식은 이러한 규칙을 따르지 않으므로 변환해야 합니다. 여러 가지 옵션을 사용할 수 있습니다:
1. jQuery Datepicker 형식 변환
지원되는 형식으로 날짜를 제공하도록 datepicker를 구성하세요.
1 2 3 4 | $( "selector" ).datepicker({
altField : "#actualDate"
altFormat: "yyyy-mm-dd"
});
|
로그인 후 복사
또는 dateFormat 옵션을 설정하세요.
1 2 3 | $( "selector" ).datepicker({
dateFormat: "yyyy-mm-dd"
});
|
로그인 후 복사
2. MySQL의 STR_TO_DATE() 함수 사용
삽입 중 문자열 변환:
1 | INSERT INTO user_date VALUES ( '' , '$name' , STR_TO_DATE( '$date' , '%m/%d/%Y' ))
|
로그인 후 복사
3. PHP의 DateTime 객체를 사용하여 변환
적절한 형식의 문자열 또는 UNIX 타임스탬프 얻기:
1 2 3 | $dt = \DateTime::createFromFormat( 'm/d/Y' , $_POST [ 'date' ]);
$date = $dt ->format( 'Y-m-d' );
$timestamp = $dt ->getTimestamp();
|
로그인 후 복사
UNIX 타임스탬프 삽입의 경우:
1 | INSERT INTO user_date VALUES ( '' , '$name' , FROM_UNIXTIME( $timestamp ))
|
로그인 후 복사
4 . 수동 문자열 조작
날짜 부분을 추출하고 유효한 형식으로 연결합니다.
1 2 | $parts = explode ( '/' , $_POST [ 'date' ]);
$date = "$parts[2]-$parts[0]-$parts[1]" ;
|
로그인 후 복사
주의:
- SQL 삽입을 방지하려면 준비된 문을 사용하세요.
- DATE 사용을 고려하세요. 날짜 전용 값의 경우 DATETIME 또는 TIMESTAMP 대신 유형을 입력하세요.
위 내용은 PHP에서 MySQL로 날짜를 삽입할 때 날짜 형식 충돌을 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!