>问题:
我无法找到文档或两者的相关答案和答案。
基本上,我想通过使用多个 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);我只需要帮助或对资源的指导。
任何帮助将不胜感激!
附加信息:
附言当前语法为
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;
无论如何,更好的方法是将日期/时间存储在日期时间类型的单个数据库字段中。检查文档以了解 date() 函数和可用格式。