我们必须插入出生日期(这是一个包含DD / MM / YYYY的下拉框) 在MySql中通过验证它。怎么做到呢?
它是出生日期的表单验证,由用户从下拉菜单中的选项输入。我的问题是如何使用PHP在MySql中插入输入DOB
答案 0 :(得分:1)
你可以首先做(每个领域):
if((int) $field == 0)
{
return false;
}
之后你可以这样做:
$birthday = date('Y-m-d', strtotime($day . '-' . $month . '-' . $year));
mysql_query("INSERT INTO your_table(birthday) VALUES('" . $birthday . "')";
答案 1 :(得分:0)
我假设通过下拉你的意思是这样的一系列选择,对吗?
<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')");
?>
希望我没有误解这个问题。
答案 2 :(得分:0)
你的问题有点令人困惑。通过“验证”来插入数据是没有意义的。
如果您想知道如何插入数据,那么这是一个基本的MySQL问题,最好通过咨询online documentation来解答。
如果您想知道如何验证数据,那么您将不得不指定所需的验证类型 - 正如砂光机已经回答的那样。这有点像问“如何制作GUI?”你可以通过无限的方式来做到这一点。问题太模糊了。
如果您只是想检查提交的值是否是有效日期,那么快速而肮脏(懒惰)的方法就是将其插入表中(假设您有一列{{3然后进行后续查询以检索存储的值。如果存储的值是该数据类型的“零”值(即'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
}
?>
当然,上述代码有许多缺点。理想情况下,您可能希望在插入之前验证数据,如果要更新记录而不是插入新记录,则需要在覆盖原始值之前获取原始值。无效的。
顺便说一句:我想你的意思是说“下拉列表”或“选择列表”。下拉菜单是另一回事。
答案 3 :(得分:-1)
什么样的验证? 当日期无效时,mysql将打印错误