PHP mysql 삽입 날짜 형식
jQuery datepicker를 사용하는 Im datepicker의 형식은 다음과 같습니다. 08/25/2012
내 데이터베이스에 삽입 할 때 오류가 있습니다. 0000-00-00 00 00 00 만 삽입합니다.
내 코드는
<?php
$id = $_POST['id'];
$name = $_POST['name'];
$date = $_POST['date'];
$sql = mysql_query( "INSERT INTO user_date VALUE( '', '$name', '$date')" ) or die ( mysql_error() );
echo 'insert successful';
?>
내 삽입이 정확하다고 확신합니다 ....
날짜 및 시간 리터럴에 명시된대로 :
MySQL
DATE
은 다음 형식의 값을 인식 합니다.
'YYYY-MM-DD'
또는'YY-MM-DD'
형식 의 문자열로 . "완전한"구문이 허용됩니다. 날짜 부분 사이의 구분 기호로 모든 구두점 문자를 사용할 수 있습니다. 예를 들어,'2012-12-31'
,'2012/12/31'
,'2012^12^31'
,와'2012@12@31'
동일하다.
'YYYYMMDD'
또는'YYMMDD'
형식으로 구분 기호가없는 문자열로 , 해당 문자열이 날짜로 이해되는 경우. 예를 들어,'20070523'
및'070523'
로 해석됩니다'2007-05-23'
만,'071332'
불법 (그것은 무의미한 월과 일 부분이)와이됩니다'0000-00-00'
.하나의 숫자로
YYYYMMDD
또는YYMMDD
수 날짜로 합리적이 제공 포맷. 예를 들어,19830905
및830905
로 해석됩니다'1983-09-05'
.
따라서 문자열 '08/25/2012'
은 유효한 MySQL 날짜 리터럴이 아닙니다. 네 가지 옵션이 있습니다 (요구 사항에 대한 추가 정보없이 선호하는 순서가 모호함).
옵션
altField
과 함께를 사용하여 지원되는 형식으로 날짜를 제공하도록 Datepicker를 구성합니다 .altFormat
<input type="hidden" id="actualDate" name="actualDate"/>
$( "selector" ).datepicker({ altField : "#actualDate" altFormat: "yyyy-mm-dd" });
또는 사용자가 날짜를
YYYY-MM-DD
형식 으로 보는 것이 만족 스러우면dateFormat
옵션을 대신 설정하면 됩니다.$( "selector" ).datepicker({ dateFormat: "yyyy-mm-dd" });
MySQL의
STR_TO_DATE()
함수를 사용 하여 문자열을 변환하십시오.INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
jQuery에서받은 문자열을
DateTime
객체 와 같이 PHP가 날짜로 인식하는 것으로 변환 합니다.$dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
다음 중 하나 :
적절한 형식의 문자열을 얻으십시오.
$date = $dt->format('Y-m-d');
UNIX 타임 스탬프를 얻습니다.
$timestamp = $dt->getTimestamp();
그런 다음 MySQL의
FROM_UNIXTIME()
기능에 직접 전달됩니다 .INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))
문자열을 유효한 리터럴로 수동으로 조작합니다.
$parts = explode('/', $_POST['date']); $date = "$parts[2]-$parts[0]-$parts[1]";
경고
코드가 SQL 주입에 취약합니다. 당신은 정말 사용해야 준비된 문 은 SQL에 대해 평가되지 않는 매개 변수로 변수를 전달하는로를. 내가 무슨 말을하는지 또는 어떻게 고치는 지 모르겠다면 Bobby Tables 의 이야기를 읽어 보세요.
또한 함수 에 대한 PHP 매뉴얼 장의 소개 에서 언급했듯이
mysql_*
:이 확장은 PHP 5.5.0부터 사용되지 않으며 향후 제거 될 예정이므로 새 코드를 작성하는 데 권장되지 않습니다. 대신 mysqli 또는 PDO_MySQL 확장을 사용해야합니다. MySQL API 를 선택하는 동안 추가 도움말 은 MySQL API 개요 를 참조하세요 .
날짜 값을 보유하기 위해
DATETIME
또는TIMESTAMP
열을 사용하는 것으로 보입니다 .DATE
대신 MySQL의 유형을 사용하는 것이 좋습니다 . 에서 설명하고있는 바와 같이 , 및 유형 :DATE
DATETIME
TIMESTAMP
이
DATE
유형은 날짜 부분은 있지만 시간 부분은없는 값에 사용됩니다. MySQL은 DATE 값을'YYYY-MM-DD'
형식으로 검색하고 표시 합니다. 지원되는 범위는'1000-01-01'
~'9999-12-31'
입니다.DATETIME
유형은 날짜와 시간 부분을 모두 포함하는 값에 사용됩니다. MySQLDATETIME
은'YYYY-MM-DD HH:MM:SS'
형식으로 값을 검색하고 표시 합니다. 지원되는 범위는'1000-01-01 00:00:00'
~'9999-12-31 23:59:59'
입니다.TIMESTAMP
데이터 타입은 날짜와 시간 부분을 모두 포함하는 값에 사용됩니다. UTC에서 UTCTIMESTAMP
까지의 범위가 있습니다.'1970-01-01 00:00:01'
'2038-01-19 03:14:07'
해당 날짜에서 타임 스탬프 생성을 고려해야합니다. witk mktime ()
예 :
$date = explode('/', $_POST['date']);
$time = mktime(0,0,0,$date[0],$date[1],$date[2]);
$mysqldate = date( 'Y-m-d H:i:s', $time );
$date_field = date('Y-m-d',strtotime($_POST['date_field']));
$sql = mysql_query("INSERT INTO user_date (column_name,column_name,column_name) VALUES('',$name,$date_field)") or die (mysql_error());
jQuery 출력에서 날짜 형식이 YYYY-MM-DD인지 확인해야합니다. jQuery가 유효한 MySQL 날짜 형식 이 아닌 MM-DD-YYYY를 반환하는 것을 볼 수 있으며 이것이 오류를 반환하는 이유입니다.
올바른 것으로 변환하려면 다음을 수행하십시오.
$dateFormated = split('/', $date);
$date = $dateFormated[2].'-'.$dateFormated[0].'-'.$dateFormated[1];
그런 다음 유효한 MySQL 형식 (예 : 2012-08-25 ) 인 YYYY-MM-DD 형식의 날짜를 얻게됩니다.
또한 데이터베이스에 데이터를 삽입 할 때 mysql_real_escape_string 을 사용하여 SQL 주입 을 빠른 솔루션으로 방지 하거나 PDO 또는 MySQLi를 더 잘 사용하는 것이 좋습니다 .
사용하는 삽입 쿼리 mysql_real_escape_string
는 다음과 같아야합니다.
$sql = mysql_query( "INSERT INTO user_date VALUE( '', '" .mysql_real_escape_string($name). "', '" .mysql_real_escape_string($date). "'" ) or die ( mysql_error() );
가장 간단한 방법은
$dateArray = explode('/', $_POST['date']);
$date = $dateArray[2].'-'.$dateArray[0].'-'.$dateArray[1];
$sql = mysql_query("INSERT INTO user_date (column,column,column) VALUES('',$name,$date)") or die (mysql_error());
Get a date object from the jquery date picker using
var myDate = $('element').datepicker('getDate')
For mysql the date needs to be in the proper format. One option which handles any timezone issues is to use moment.js
moment(myDate).format('YYYY-MM-DD HH:mm:ss')
Try Something like this..
echo "The time is " . date("2:50:20");
$d=strtotime("3.00pm july 28 2014");
echo "Created date is " . date("d-m-y h:i:sa",$d);
First of all store $date=$_POST['your date field name'];
insert into **Your_Table Name** values('$date',**other fields**);
You must contain date in single cote (' ')
I hope it is helps.
ReferenceURL : https://stackoverflow.com/questions/12120433/php-mysql-insert-date-format
'programing tip' 카테고리의 다른 글
UITableView 스크롤링 감지 (0) | 2020.12.28 |
---|---|
EditText가 숫자 만 받아들이도록 강제하는 방법은 무엇입니까? (0) | 2020.12.28 |
C # RSA 암호화 / 복호화 (전송 포함) (0) | 2020.12.28 |
Android 재정의 onBackPressed () (0) | 2020.12.28 |
Apache에서 .svn 폴더에 대한 액세스 거부 (0) | 2020.12.27 |