2009-04-10 48 views
0

如果您有5個日期選擇下拉列表(Y,m,d,H,i),您如何使用PHP5將選定的日期和時間插入到mySQL表的單個列中作爲日期時間?如何使用php插入從下拉列表中選擇的日期到MySQL表中?

我知道他們需要在一個字符串進行組合,如:

$DateTime="$Year-$Month-$Day $Hour:$Minute:00"; 

,然後也許使用的strtotime:

$Date=date('Y-m-d H:i:s', strtotime($DateTime)) ; 

,但我在哪裏聲明的變量和如何構建它查詢如:

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "details")) { 

$insertSQL = sprintf("INSERT INTO sessions (Location1, Location2, Date) 
VALUES (%s, %s, $s)", 

         GetSQLValueString($_POST['Location1'], "text"), 
         GetSQLValueString($_POST['Location2'], "text"), 
         GetSQLValueString($_POST[' ???? '], "date")); 

回答

0

感謝所有誰試圖幫助 - 答案是少了很多複雜的 只是需要申報後變量(金髮碧眼的時刻,我想笑!):

$ _ POST [「的startDate」] = 「$ Year- $ Month- $ Day $ Hour:$ Minute:00」;

不需要時間轉換,因爲它已經在Mysql格式(YEY!)

1

您也可以看看mktime()函數:http://ca.php.net/mktime

你會那麼只需要聲明的日期變量,如:

$date = mktime($_POST['H'],$_POST['i'],0,$_POST['m'],$_POST['d'],$_POST['Y']); 

$location1 = mysql_real_escape_string($_POST['Location1']; 
$location2 = mysql_real_escape_string($_POST['Location2']; 

$insertSQL = "INSERT INTO sessions (Location1, Location2, Date) VALUES ('$location1', '$location2', $date)"; 

mysql_query($insertSQL); 

編輯:

或者,使用sprintf的格式,你使用:

$date = mktime($_POST['H'],$_POST['i'],0,$_POST['m'],$_POST['d'],$_POST['Y']); 

$insertSQL = sprintf("INSERT INTO sessions (Location1, Location2, Date) 
    VALUES (%s, %s, $s)", 

          GetSQLValueString($_POST['Location1'], "text"), 
          GetSQLValueString($_POST['Location2'], "text"), 
          GetSQLValueString($date, "date")); 

我從來沒有使用GetSQLValueString函數,所以我只能假設這是使用它的正確方法。

0

創建一個在「顯示模式」和MySQL模式之間進行轉換的實用函數,ti將在未來的幾個其他項目中派上用場。

Date - 返回一個字符串,根據給定的格式字符串格式化

MkTime - 獲取Unix時間戳的日期

Strtotime - 解析英文文本的日期時間描述爲Unix時間戳

0

的MySQL提供了一個功能,讓您輕鬆實現這一點。 FROM_UNIXTIME()。我會使用mktime()來獲取你的日期到一個時間戳,因爲它的開銷遠低於strtodate,因爲你知道date-parts不需要將它解析爲一個字符串。

以下是最直接的方法,我能想到的:

$date = mktime($_POST['H'], $_POST['i'], 0, $_POST['m'], $_POST['d'], $_POST['Y']); 

$location1 = mysql_real_escape_string($_POST['Location1']; 
$location2 = mysql_real_escape_string($_POST['Location2']; 

$insertSQL = "INSERT INTO sessions (Location1, Location2, Date) VALUES ('$location1', '$location2', FROM_UNIXTIME($date))"; 

我假設GetSQLValueString是Dreamweaver的自定義函數(我只是聽說過)。不過,我相信你可以將它應用到你的實現中。

+0

如果MySQL,日期和時間總是遵循相同的順序 - 最大的單位第一,然後是下一個最大的,最小的(即:年,月,日,小時,分鐘,秒)爲什麼使用mktime會給我一個不正確的格式,例如(s,i,H,m,d,Y)? * confused * – Brainache 2009-04-11 13:19:09

相關問題