繁体   English   中英

MySQL将我的日期列保存为0000-00-00?

[英]Mysql saved my date column as 0000-00-00?

我插入了除日期部分以外的所有记录,该日期部分错误地插入了0000-00-00。 我的代码内部有什么问题?

if(isset($_POST["submit"]))
    {

        $birthDay= $_POST["Birthday_Year"] . "-" . $_POST["Birthday_Month"] . "-" . $_POST["Birthday_day"];


        $sql="SELECT * FROM student WHERE stud_id=1";
        $result = mysqli_query($db,$sql)  or die("Error: ".mysqli_error($db));
        $row=mysqli_fetch_array($result,MYSQLI_ASSOC);
        if(mysqli_num_rows($result) == 1)
        {
            $msg = "Sorry...This Studnent ID is already exist...";
        }
        else
        {
            $query = mysqli_query($db, "INSERT INTO student (stud_fname, stud_lname, stud_gfname,stud_id,stud_gender,stud_dob,stud_dep,stud_year,stud_section)
            VALUES ('$fname', '$lname', '$gfname','$studid', '$gender', '$birthDay','$department', '$year', '$section')");
            if($query)
            {
                $msg = "Thank You! you are now registered.";
            }
        }
    }

在所有情况下,保存为0000-00-00的日期都意味着MySQL的值无效(包括完全没有值)。 检查您的代码,以确保该日期始终具有有效的值格式。

MySQL文档

无效的DATE,DATETIME或TIMESTAMP值将转换为适当类型(“ 0000-00-00”或“ 0000-00-00 00:00:00”)的“零”值。

在代码中添加一些验证:

if (!empty($_POST["Birthday_Year"]) && !empty($_POST["Birthday_Month"]) && !empty($_POST["Birthday_day"]))
{
    // do stuff
} else 
{
    // validation error: some of the values are empty
}

PS:另一个问题是,如果您让用户自己输入值而不进行验证,则您的代码可能会遭受一些SQL注入攻击

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM