首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mysql把我的日期列保存为0000-00-00?

Mysql把我的日期列保存为0000-00-00?
EN

Stack Overflow用户
提问于 2015-12-28 13:57:31
回答 1查看 3K关注 0票数 1

我已插入所有记录,但日期部分插入错误为0000-00-00。我的代码有什么问题?

代码语言:javascript
运行
复制
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.";
            }
        }
    }
EN

Stack Overflow用户

回答已采纳

发布于 2015-12-28 14:06:39

在所有情况下,保存为0000-00-00的日期意味着MySQL得到了一个无效的值(包括根本没有值)。检查您的代码,以确保它始终具有该日期的有效值格式。

来自MySQL文档

无效的日期、日期或时间戳值转换为相应类型(“0000-00-00”或“0000-00-00:00:00”)的“零”值。

在代码中添加一些验证:

代码语言:javascript
运行
复制
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注入攻击是有一个漏洞的。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34494900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档