2012-03-29 7 views
1

PHP에서 실행할 쿼리가 있습니까? 그러면 두 날짜 사이에 모든 날짜를 삽입 할 수 있습니까?시작 날짜와 종료 날짜를 입력하고 그 사이에 날짜를 삽입하십시오

예를 들어 03/20/2012 및 03/20/2013을 입력하고 두 날짜 사이에 모든 날짜가 포함 된 mysql을 채우고 싶습니까?

나는 항공사를위한 발권 시스템을 만들고 있었고, 20 개 이상의 장소에서 매일 13 회의 비행을하고 수동으로 삽입하는 일이 지루해졌습니다.

나는 매일

EG의 날짜뿐만 아니라 값을 삽입하고 싶었다.

FROM    TO    Date_From    Date_To 
    Dar Es Salaam  Zanzibar   03/20/2012    03/21/2012 
    Dar Es Salaam  Zanzibar   03/21/2012    03/22/2012 

나는이 목록을 (내가 연구 한 질문은 목록을 생성하는 방법을 답) 나는 MySQL의 DB

어떤 도움을 채우려 생성 할 싶지 않아 크게 환영받을 것입니다

+0

내가 그렇게 변함없이 어리석은 질문을 했 데이터를 삽입 아무도 대답을 귀찮게하거나, 내가 stackoverflow 커뮤니티 O_o 그루터기 않았다. –

답변

2

당신은 날짜

function dateRange($first, $last, $step = '+1 day', $format = 'd/m/Y') { 

    $dates = array(); 
    $current = strtotime($first); 
    $last = strtotime($last); 

    while($current <= $last) { 

     $dates[] = date($format, $current); 
     $current = strtotime($step, $current); 
    } 

    return $dates; 
} 

$dateRange = dateRange("03/20/2012", "03/20/2013); 

의 배열을 생성하기 위해이 기능을 사용할 수 있습니다 다음 iterato 배열을 통해

$stmt = $dbh->prepare("INSERT INTO table (from, to, date_from, date_to) VALUES (:from, :to, :datefrom, :dateto)"); 
$stmt->bindParam(':from', "Dar Es Salaam"); 
$stmt->bindParam(':to', "zanzibar"); 
$stmt->bindParam(':from', $datefrom); 
$stmt->bindParam(':to', $dateto); 
for ($i = 0; $i < count($dateRange); $i++){ 
    $datefrom = strototime($dateRange[$i]); 
    $dateto = strototime($dateRange[$i+1]); 
    $stmt->execute(); 
} 
+0

이 작업은 실제로 작동하는 것처럼 보일 수 있습니다. 아프다 그것을 밖으로 시험하고 당신에게 돌아 간다 –

+0

한 쌍의 꼬임, 그러나 그것은 매력처럼 움직였다. 감사 –

0

DB를 채우는 가장 간단한 방법은 SQL 삽입 쿼리 목록을 생성하는 것입니다.

따라서 insert into table (... , date_from, date_to, ...) values (..., val1, val2, ...)과 같은 쿼리 목록을 생성 할 수 있다면 이러한 쿼리를 실행하고 테이블을 POP 할 수 있습니다.

+0

아직 데이터베이스에 없습니다. insert into table 절을 사용하여 하나씩 수동으로 삽입하는 대신, 두 날짜 사이의 데이터로 db를 채울 쿼리가 있는지 알고 싶습니다. –

0
$int_date_from = strtotime($str_date_from); // Will be used often 
$int_days = (strtotime($str_date_to) - $int_date_from); // Calculate difference in seconds 
$int_days /= floor(60 * 60 * 24); // Seconds to days 

$arr_values = array(); 
for($i = 0; $i < $int_days; $i++) { 
    $str_new_date_from = date('m/d/Y', strtotime("+{$i} Days", $int_date_from)); 
    $str_new_date_to = date('m/d/Y', strtotime('+'.($i + 1).' Days', $int_date_from)); 

    $arr_values[] = "('{$str_from}', '{$str_to}', '{$str_new_date_from}', '{$str_date_to}')"; 
} 

$str_values = implode(', ', $arr_values); 

mysql_query(" 
INSERT INTO table 
VALUES {$str_values} 
"); 
관련 문제