0

当您有 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"));
4

4 回答 4

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 函数,所以我只能假设这是使用它的正确方法。

于 2009-04-10T16:04:57.643 回答
0

创建一个在“显示模式”和 MySQL 模式之间转换的实用程序函数,将来会在其他几个项目中派上用场。

Date - 返回一个字符串,根据给定的格式字符串格式化

MkTime - 获取日期的 Unix 时间戳

Strtotime - 将英文文本日期时间描述解析为 Unix 时间戳

于 2009-04-10T21:27:05.170 回答
0

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 自定义功能(我只听说过)。不过,我相信您可以将其应用到您的实现中。

于 2009-04-11T11:01:20.503 回答
0

感谢所有试图提供帮助的人 - 答案要简单得多(我猜是金发时刻!哈哈)只需将 post 变量声明为:

$_POST['startDate'] ="$Year-$Month-$Day $Hour:$Minute:00";

无需时间转换,因为它已经是 Mysql 格式(是的!)

于 2009-04-15T17:12:06.507 回答