0

問題:

ドキュメント、または自分の状況に関連する回答と回答の両方を見つけるのに苦労しています。

基本的に、複数の HTML フォーム ドロップダウン フィールドを使用して、挿入可能な MySQL 対応の日付を生成したいと考えています。

現在、私の挿入コードは、MySQL 形式のテキスト フィールドに手動で入力する日付用の 1 つのフィールドを使用しています。

$sql=
    " INSERT INTO events (e_date, e_time, e_ampm, e_type, e_name) " .
    " VALUES ('{$form_e_date}','{$form_e_time}', '{$form_e_ampm}', '{$form_e_type}','{$form_e_name}')";

$form_e_date (現在、YYYY-MM-DD 形式を使用してテキスト フィールドに入力しています) の代わりに、ドロップダウン選択ボックスから選択した値で 3 つの個別のフォーム フィールド ($month、$day、$year など) を使用したいと考えています。

質問:

$form_e_date の代わりに 3 つの変数 ($year、$month、$day、MySQL の場合は「-」で区切られる) を連結する方法はありますか? もしそうなら、この構文をどのように構成しますか?

私はこれにもっと良い方法でアプローチすることにもオープンです (まだ MySQL/PHP を使用しています)。リソースへのヘルプまたは指示が必要です。

どんな助けでも大歓迎です!

追加情報:

PS現在の構文は

VALUES ('{$form_e_date}','{$form_e_time}', ... etc.

それ以外の

VALUES ('$_POST[form_e_date]','$_POST[form_e_time]', ... etc.

私が受け取っていた未定義のインデックス通知に対する PHP 修正の一部として。

また、解決策は

$form_e_date= $_POST['year'] . "-" . $_POST['month'] . "-" . $_POST['day'];

未定義のインデックス通知を排除する手法を使用して事前に定義されている場合でも、新しい年、月、および日の変数で未定義のインデックス通知が発生するため、私にとっては好ましくありません。たとえば、次のようになります。

if (array_key_exists("year", $_POST))
                $year = mysql_real_escape_string($_POST["year"]);
            else
                $year = null;

コード #abc (JT Smith の回答へのコメント用):

$month = $_POST['month'];
$day = $_POST['day'];
$year = $_POST['year'];

$whole_date = array($year, $month, $day);
$mysql_formatted_date = implode("-", $whole_date);


$sql=
" INSERT INTO events (e_date, e_time, e_ampm, e_type, e_name) " .
" VALUES ('{$mysql_formatted_date}','{$form_e_time}', '{$form_e_ampm}', '{$form_e_type}','{$form_e_name}')";

コード #fgh:

<select name="month">
    <option value="01">Jan</option>
<option value="02">Feb</option>
<option value="03">Mar</option>
<option value="04">Apr</option>
<option value="05">May</option>
<option value="06">Jun</option>
<option value="07">Jul</option>
<option value="08">Aug</option>
<option value="09">Sep</option>
<option value="10">Oct</option>
<option value="11">Nov</option>
<option value="12">Dec</option>
</select>

<select name="day">
    <?php
    for ($i = 1; $i <=31; $i++) {
        echo "<option value=\"$i\">$i</option>";
    }
?>
</select>

<select name="year">
    <option value="2012">2012</option>
    <option value="2013">2013</option>
</select>
4

3 に答える 3

0

要件に応じてphpでそれらを連結するか、mysql concat関数も使用できます

于 2012-04-18T05:39:04.183 に答える
0

なぜmysqlクエリ内で連結する必要があるのですか? それを単一の変数に連結し、その変数を (今のように) クエリで使用してみませんか?

$new_date = $_POST['year'] . "-" . $_POST['month'] . "-" . $_POST['day'];

$query = " INSERT INTO events (e_date, e_time, e_ampm, e_type, e_name) " .
" VALUES ('{$new_date}','{$form_e_time}', '{$form_e_ampm}', '{$form_e_type}','{$form_e_name}')";
于 2012-04-18T05:40:36.530 に答える
0

PHP の連結演算子はドットです.。構文は次のようになります。

$date = $year . '-' . $month . '-' . $day;

とにかく、より良いアプローチは、日付/時刻をdatetime型の単一のdbフィールドに格納することです。date() 関数と使用可能な形式については、ドキュメントを確認してください。

于 2012-04-18T05:40:40.897 に答える