0

日付選択(Y、m、d、H、i)に5つのドロップダウンがある場合、PHP5を使用して、選択した日付と時刻を日時としてmySQLテーブルの1つの列にどのように挿入しますか?

私はそれらが次のような文字列に結合される必要があることを知っています:

$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

助けようとしたすべての人に感謝します-答えははるかに複雑ではありませんでした(金髪の瞬間だと思います!笑)ポスト変数を次のように宣言するだけで済みました:

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

すでに Mysql 形式になっているため、時刻を変換する必要はありません (YEY!)

于 2009-04-15T17:12:06.507 に答える
0

「表示モード」と MySQL モードの間で変換するユーティリティ関数を作成します。ti は、将来、他のいくつかのプロジェクトで役立ちます。

Date - 指定された書式文字列に従って書式設定された文字列を返します

MkTime - 日付の Unix タイムスタンプを取得する

Strtotime - 英語のテキストによる日時の説明を解析して Unix タイムスタンプにする

于 2009-04-10T21:27:05.170 に答える