【发布时间】:2009-04-01 14:42:26
【问题描述】:
我们必须插入出生日期(这是一个包含 DD/MM/YYYY 的下拉框) 在 MySql 中通过验证它。如何做呢?
它是由用户从下拉菜单中的选项输入的出生日期的表单验证。我的问题是如何使用 PHP 在 MySql 中插入该输入 DOB
【问题讨论】:
我们必须插入出生日期(这是一个包含 DD/MM/YYYY 的下拉框) 在 MySql 中通过验证它。如何做呢?
它是由用户从下拉菜单中的选项输入的出生日期的表单验证。我的问题是如何使用 PHP 在 MySql 中插入该输入 DOB
【问题讨论】:
你可以首先做(对于每个字段):
if((int) $field == 0)
{
return false;
}
然后你可以这样做:
$birthday = date('Y-m-d', strtotime($day . '-' . $month . '-' . $year));
mysql_query("INSERT INTO your_table(birthday) VALUES('" . $birthday . "')";
【讨论】:
你的问题有点混乱。 “通过验证”插入数据没有意义。
如果您想知道如何插入数据,这是一个基本的 MySQL 问题,最好通过咨询 online documentation 来回答。
如果您想知道如何验证数据,则必须指定所需的验证类型——正如桑德斯所回答的那样。这有点像问“我如何制作 GUI?”有无数种方法可以做到。这个问题太模糊了。
如果您只是想检查提交的值是否是有效日期,那么一种快速而肮脏(懒惰)的方法就是将其插入表中(假设您有一列 DATE/DATETIME type ),然后进行后续查询以检索存储的值。如果存储的值是该数据类型的“零”值(即“0000-00-00”或“0000-00-00 00:00:00”),则提交的值不是有效日期。
所以你的代码看起来像:
<?
$month = mysql_real_escape_string($_POST['month']);
$day = mysql_real_escape_string($_POST['day']);
$year = mysql_real_escape_string($_POST['year']);
$query = "INSERT INTO my_table (`birthday`) VALUES ('$year-$month-$day')";
mysql_query($query);
$query = "SELECT `birthday` FROM my_table WHERE `id`=LAST_INSERT_ID()";
$qid = mysql_query($query);
$res = mysql_fetch_object($query);
if ($res->birthday == '0000-00-00') {
// submitted date was invalid
}
?>
当然,上面的代码有很多缺点。理想情况下,您可能希望在插入数据之前对其进行验证,并且如果您正在更新记录而不是插入新记录,那么您需要在原始值被覆盖之前获取原始值无效的。
顺便说一句:我认为您的意思是说“下拉列表”或“选择列表”。下拉菜单是另一回事。
【讨论】:
我假设你所说的下拉是指一系列这样的选择,对吧?
<select name="month">
<option value ="01">January</option>
<option value = "02">February<option>
...
</select>
<select name="day">
<option value = "01">01</option>
...
</select>
<select name="year">
<option value = "1930">1930</option>
[etc.]
如果是这种情况,那么您的数据就是自我验证的。在服务器端,您可以这样做:
<?php
$mysql_date = "$_POST[year]" . "-" . "$_POST[month]" . "-" . "$_POST[day]";
mysql_query("INSERT INTO your_table (`date`) VALUES ('$mysql_date')");
?>
希望我没有误解这个问题。
【讨论】:
什么样的验证? 日期无效时mysql会打印错误
【讨论】: