2013-05-13 145 views
0

我已經創建了一個計劃使用php和jquery在我的應用程序。我有一個部分,用戶輸入開始日期和開始時間,另一個部分輸入結束日期和結束時間。該字段都爲單獨的,就像這樣:插入兩個獨立的字段到一個記錄php mysql

<input type="text" name="dateFrom" id="dateFrom"> <!-- datepicker plugin --> 
<input type="text" name="time_from" id="timeFrom"> <!-- timepicker plugin --> 

<input type="text" name="dateTo" id="dateTo"> <!-- datepicker plugin --> 
<input type="text" name="time_to" id="timeTo"> <!-- timepicker plugin --> 

我想知道的是,一旦用戶輸入上述信息,以及將數據提交,而不是在表中創建單獨列到數據庫中,有無論如何將dateFromtimeFrom字段插入到一個名爲start_time的數據庫列中作爲UNIX時間戳,並且對於dateTo & timeTo字段也是如此。

任何人都可以給我任何想法,我會如何做到這一點?

+2

連接是你的朋友。 – 2013-05-13 15:07:04

回答

0

可以使用strtotime組合日期和時間,以在插入之前獲取UNIX時間戳。

$dateFrom = "2013-05-13"; 
$timeFrom = "13:52"; 

$fromStamp = strtotime("$dateFrom $timeFrom"); 

附註:m/d/yd-m-y格式

日期是由尋找的各種組件之間的分隔符消除歧義:如果隔板是斜線(/),則美國m/d/y假設;而如果分隔符是破折號(-)或點(.),則假定歐洲d-m-y格式。

爲避免潛在的歧義,最好在可能的情況下使用ISO 8601(YYYY-MM-DD)日期或DateTime::createFromFormat()

+0

你已經快了一點。是的只是嘗試把你的輸入數據轉換成這種格式「2013-05-13 00:01」,並將它存儲在一個DateTime列中 – Ello 2013-05-13 15:09:27

0

喜歡的東西

INSERT INTO yourtable (start_time, end_time) 
VALUES (UNIX_TIMESTAMP('$dateFrom $timeFrom'), UNIX_TIMESTAMP('$dateTo $timeTo')) 

會做,假設你的$ dateFrom是yyyy-mm-dd,和$ timeFrom是hh:mm:ss。當然,如果您直接將表單字段填充到查詢中,則會受到SQL注入攻擊,但這只是爲了向您展示一種您應該這樣做的方式。

+0

我唯一猶豫發佈這種類型的解決方案是注入的可能性。 – Kermit 2013-05-13 15:10:54

+0

使用參數化查詢,php會照顧你的問題。但你仍然不應該直接接受用戶的日期,或者有人會試圖通過一些墮落的「9999-99-99 99:99:99」或其他任何事情。 – 2013-05-13 15:13:31

相關問題