Php 编辑配置文件中的日期保存为0000-00-00

Php 编辑配置文件中的日期保存为0000-00-00,php,Php,我正在尝试编辑用户配置文件,如果我编辑DOB字段,它工作正常,但如果我不更改DOB字段,它将以值0000-00-00(DB)保存。有人能帮忙找出解决办法吗。 edit.php代码- <?php require_once("global.inc.php"); if(isset($_SESSION['logged_in'])) { $user = unserialize($_SESSION['user']); list($year,$month,$day)=explode('-

我正在尝试编辑用户配置文件,如果我编辑DOB字段,它工作正常,但如果我不更改DOB字段,它将以值0000-00-00(DB)保存。有人能帮忙找出解决办法吗。 edit.php代码-

<?php
require_once("global.inc.php");
if(isset($_SESSION['logged_in']))
{
    $user = unserialize($_SESSION['user']);
    list($year,$month,$day)=explode('-', $user->DOB);

    if(isset($_POST['edit']))
    {
        $id=$user->id;
        $username = mysql_real_escape_string($_POST['username']);
        $DOB = ($_POST['birthyear'].$_POST['birthmonth'].$_POST['birthday']);
        $subject = mysql_real_escape_string($_POST['subject']);

        $data['id'] = $id;
        $data['username'] = $username;
        $data['DOB'] = $DOB;
        $data['subject'] = $subject;

        $user=new User($data);
        if($user->saveteacher(false))
        {
            echo '<script> alert("Your Profile Is Updated Successfully"); window.location.href="user/profile.php" ;</script>;';
        }
        else
        {
             echo mysql_error();
        }
    }
}
?>
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#E1F5FF">
</div>
<form action="edit.php" method="post" >
<div class="reg-form">
 <label style="float:left">Teacher Id</label>
 <input class="unvisible" type="text" name="teacher_id" readonly value="<?php echo $user->id?>">
 <br/><br/>
 <label style="float:left">Username</label>
 <input class="required" type="text" name="username" value="<?php echo $user->username?>">
 <br/><br/>
 <label style="float:left">D-O-B</label>
 <div style="float:right">
  <select style="margin-left:-4px; width:62px" name="birthyear">
   <option value="<?php echo $year?>"><?php echo $year ?></option>
   <?php for ($i = 1970; $i < date('Y'); $i++) : ?>
   <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
   <?php endfor; ?>
  </select>
  <select style="margin-left:-4px; width:47px" name="birthmonth">
   <option value=""><?php echo $month ?></option>
   <?php for ($i = 1; $i <= 12; $i++) : ?>
   <option value="<?php echo ($i < 10) ? '0'.$i : $i; ?>"><?php echo $i; ?></option>
   <?php endfor; ?>
  </select>
  <select style="margin:-4px; width:47px" name="birthday">
   <option value=""><?php echo $day ?></option>
   <?php for ($i = 1; $i <= 31; $i++) : ?>
   <option value="<?php echo ($i < 10) ? '0'.$i : $i; ?>"><?php echo $i; ?></option>
   <?php endfor; ?>
  </select>
 </div>
 <br/><br/>
 <label style="float:left; ">Subject</label>
 <input style="margin-top:18px; margin-left:80px" type="submit" name="edit"  value="Save Changes">
</div>
</form>
</div>
</body>
</html>

您正在生成的日期字符串

20130916
用于传递给
用户
对象。如果该字符串直接进入数据库,您的DB(我假设是MySQL?)会将其视为无效日期。大多数数据库希望其日期采用
yyyy-mm-dd
格式


您也可能会受到影响,因为当您在
用户名
之类的内容上进行手动转义时,您直接传递日期值,而没有转义。

。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。我们不需要查看您的完整标记和样式。只要相关的部分就足够了。此外,。但是当我编辑DOB字段时,它正在正确保存,并且DOB正在以与您提到的yyyy mm dd@Marc B相同的格式保存在DB中。这时,您应该显示此
saveteacher()
方法的作用,因为您提供的代码,我的答案是正确的。很抱歉,我仍然不知道如何格式化stackoverflow的代码,但我正在尝试使用save.php编辑我的问题
20130916