[英]How to insert dates selected from drop downs into mySQL table using php?
當您有5個下拉列表用於日期選擇(Y,m,d,H,i)時,如何使用PHP5將所選的日期和時間作為日期時間插入到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"));
您可能還會研究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函數,因此我只能假定這是使用它的正確方法。
創建一個在“顯示模式”和“ MySQL模式”之間轉換的實用程序函數,ti將來會在其他幾個項目中派上用場。
日期 -返回一個字符串,該字符串根據給定的格式字符串進行格式化
MkTime-獲取日期的Unix時間戳
Strtotime-將英語文本日期時間描述解析為Unix時間戳
MySQL提供了使您輕松實現此功能的功能。 FROM_UNIXTIME()
。 我會使用mktime()
將日期設為時間戳,因為它的開銷比strtodate要少得多,因為您知道日期部分,因此無需將其解析為字符串。
以下是我能想到的最簡單的方法:
$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的自定義函數(我只是聽說過)。 不過,我敢肯定您可以在實現中采用它。
感謝所有嘗試提供幫助的人-答案要簡單得多(我想是金發時刻!),只需將post變量聲明為:
$ _POST ['startDate'] =“ $ Year- $ Month- $ Day $ Hour:$ Minute:00”;
不需要時間轉換,因為它已經是Mysql格式(YEY!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.