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의 유형을 사용하는 것이 좋습니다 . 에서 설명하고있는 바와 같이 , 및 유형 :DATEDATETIMETIMESTAMP이
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'
You should consider creating a timestamp from that date witk mktime()
eg:
$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());
You must make sure that the date format is YYYY-MM-DD on your jQuery output. I can see jQuery returns MM-DD-YYYY, which is not the valid MySQL date format and this is why it returns an error.
To convert it to the right one you could do this:
$dateFormated = split('/', $date);
$date = $dateFormated[2].'-'.$dateFormated[0].'-'.$dateFormated[1];
Then you will get formatted date that will be valid MySQL format, which is YYYY-MM-DD, i.e. 2012-08-25
I would also recommend using mysql_real_escape_string as you insert data into database to prevent SQL injections as a quick solution or better use PDO or MySQLi.
Your insert query using mysql_real_escape_string should rather look like this:
$sql = mysql_query( "INSERT INTO user_date VALUE( '', '" .mysql_real_escape_string($name). "', '" .mysql_real_escape_string($date). "'" ) or die ( mysql_error() );
The simplest method is
$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
'Development Tip' 카테고리의 다른 글
| UITableView 스크롤링 감지 (0) | 2020.12.26 |
|---|---|
| EditText가 숫자 만 받아들이도록 강제하는 방법은 무엇입니까? (0) | 2020.12.26 |
| C # RSA 암호화 / 복호화 (전송 포함) (0) | 2020.12.26 |
| Android 재정의 onBackPressed () (0) | 2020.12.26 |
| 명령 줄에서 Perl 모듈이 시스템에 설치되어 있는지 어떻게 확인할 수 있습니까? (0) | 2020.12.26 |