簡體   English   中英

如何使用php將下拉列表中選擇的日期插入到mySQL表中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM