2013-01-07 2 views
0

나는 이것을하는 방법을 찾았지만 나는 그것을 올바르게 얻는 것처럼 보이지 않는다. mysql 데이터베이스에 삽입 할 날짜로 월, 일, 년을 결합하는 방법을 알려주십시오. 내 문제는 실제로 데이터베이스에 정보를 보내지 않습니다. 내 문제는 3 개의 별도 필드 (월, 일, 년)를 데이터베이스에 보냈다는 것입니다. 추천 코드를 어디에 둘 것인지 정확하게 알려주십시오.데이터베이스에 날짜를 삽입하는 방법은 무엇입니까?

<?php 
function register_user($register_data) { 
array_walk($register_data, 'array_sanitize'); 

$fields = '`' . implode('`, `', array_keys($register_data)) . '`'; 
$data = '\'' . implode('\', \'', $register_data) . '\''; 

mysql_query("INSER INTO `users` ($fields) VALUES ($data)"); 
} 
?> 

<form action="" method="post"> 
    <ul> 
     <li> 
      <select name="month"> 
       <option value="01">January</option> 
       //all the other month options 
      </select> 
      <select name="day"> 
       <option value="01">1</option> 
       //all the other days 
      </select 
      <select name="year"> 
       <option value="2013">2013</option> 
       //more year options 
      </select> 
     </li>  
     <li> 
    <input type="submit" name="registrationform" value="Sign up"> 
    </li> 
    </ul> 
</form> 

<?php 
if (empty($_POST) === false && empty($errors) === true){ 
    $register_data = array(
     'Month'  => $_POST['month'], 
     'Day'  => $_POST['day'], 
     'Year'  => $_POST['year'] 
    ); 

    register_user($register_data); 
    //redirect 
    exit(); 
?> 
+4

내가 좋겠이어야한다 [DATE] (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-types.html)의 MySQL 문서를 살펴 보시기 바랍니다. – silentw

답변

0
<?php 
function register_user($register_data) { 
$register_data['birthday'] = $register_data['year'] . '-' . $register_data['month'] . '-' . $register_data['day']; 
unset($register_data['year']); 
unset($register_data['month']); 
unset($register_data['day']); 
array_walk($register_data, 'array_sanitize'); 

$fields = '`' . implode('`, `', array_keys($register_data)) . '`'; 
$data = '\'' . implode('\', \'', $register_data) . '\''; 

mysql_query("INSER INTO `users` ($fields) VALUES ($data)"); 
} 
?> 

당신이 '생일'라는 테이블의 열을 필요로 다음 것이며,이 유형 'DATE'

+0

감사합니다! 이것은 효과가 있었다. –

0

생일 열 MySQL의에서 DATE 또는 DATETIME 필드 확인한 다음과 같이 삽입 :

당신은 년이 걸릴
$_POST['year'] . "-" . $_POST['month'] . "-" . $_POST['day'] 
0

, 월, 다음 날 (순서대로 다음은 내 코드입니다) 사이에 하이픈 (ASCII 문자 # 45)을 배치합니다. 그리고 그것이 바로 그 것이다.

올해는 4 개의 숫자, 1 월에는 2 개의 숫자, 1 일에는 2 개의 숫자 (이 숫자는 전화 번호 임)가주의하십시오.

당신의 결과는 다음 예제처럼 보이는 것이 중요하다 :

October 3rd 2011 := 2011-10-03 
1st Feb '13   := 2013-02-01 

는 또한 11 월 31 일 또는 이와 유사한 같은 존재하지 않는 어떤 일을하지 않도록주의하십시오.

그리고 :

Please, don't use mysql_* functions in new code. 그들은 더 이상 유지되지 않습니다 and are officially deprecated. red box을 참조하십시오. prepared statements에 대해 자세히 알아보고 PDO 또는 MySQLi - this article을 사용하면 어떤 결정을 내리는 데 도움이됩니다. PDO를 선택하면 here is a good tutorial입니다.

0

내가 지금처럼 생일 필드를 연결할 것 :

$birthday = $_POST['year'] . '-' . $_POST['month'] . '-' . $_POST['day']; 

그런 다음 당신이 그것을 삽입 할 수 있습니다

mysql_query("INSERT INTO users (birthday) VALUES ('" . $birthday . "')"); 
0

을 당신은 여러 가지 방법이 있습니다 ..

서로 다른 세 가지로 나눌 수 있습니다 유형이 int 인 데이터베이스의 필드.

OR

당신은 날짜로 필드를 사용할 수 있습니다

CREATE TABLE `date` (
    `dp_date` date NOT NULL default '0000-00-00', 
) ; 

$query_manual = "INSERT INTO date(dp_date) 
VALUES ($_POST['year']-$_POST['month']-$_POST['day']')"; 
관련 문제