0

问题:

我无法找到与我的情况相关的文档或相关答案和已回答的答案。

基本上,我想通过使用多个 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),并从下拉选择框中选择值。

问题:

有没有办法连接 3 个变量($year、$month、$day,在 MySQL 中用“-”表示)代替 $form_e_date,如果是这样,你将如何构造这个语法?

我也愿意以更好的方式来解决这个问题(仍然使用 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 回答