繁体   English   中英

如何将多个HTML表单字段作为日期插入到单个MySQL列中

[英]How to INSERT multiple HTML form fields into a single MySQL column as date

问题:

我在查找文档或与我的情况相关的答案时遇到麻烦。

基本上,我想通过使用多个html表单下拉字段来生成一个MySQL就绪的日期,准备插入。

当前,我的插入代码使用单个字段作为日期,我在MySQL格式的文本字段中手动输入了该日期:

$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>

根据您的要求在php中连接它们,也可以使用mysql concat函数

为什么需要在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}')";

PHP中的串联运算符是一个点. 语法如下:

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

无论如何,更好的方法是将日期/时间存储在类型为datetime的单个db字段中。 检查文档中的date()函数和可用格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM