2012-03-29 63 views
1

是否有查詢在php中運行,可讓您在兩個日期之間插入所有日期?輸入一個開始日期和結束日期,並將其中的日期插入到db

例如,輸入2012年3月20日和2013年3月20日並在兩者之間填入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數據庫

任何幫助將不勝感激

+0

難道我問一個問題,那就是總是愚蠢所以沒有人打擾回答,或者我倒塌了stackoverflow社區O_o。 – 2012-03-29 08:38:08

回答

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

這個實際上可能看起來像它的工作。我試了一下,然後回覆給你 – 2012-03-29 08:46:03

+0

一對夫婦糾結,但它像一個魅力。謝謝 – 2012-03-29 08:49:25

0

填充數據庫最簡單的方法是生成一個SQL插入查詢列表。

因此,如果您可以生成一個類似於insert into table (... , date_from, date_to, ...) values (..., val1, val2, ...)的查詢列表,那麼您可以運行這些查詢並對該表進行人工授權。

+0

他們還沒有在數據庫中。使用insert into table子句,而不是手動將它們逐一插入,我想知道是否有一個查詢將在兩個日期之間用數據填充數據庫 – 2012-03-29 08:40:52

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} 
"); 
相關問題