Mysql saved my date column as 0000-00-00?

元气小坏坏 提交于 2019-12-20 07:16:11

问题


I have inserted all records except the date part which inserted incorrectly as 0000-00-00. What is the problem inside my code?

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.";
            }
        }
    }

回答1:


In all cases date saved as 0000-00-00 means that MySQL got an invalid value (including no value at all). Check your code to make sure that it always has a valid value format for the date.

From the MySQL documentation:

Invalid DATE, DATETIME, or TIMESTAMP values are converted to the “zero” value of the appropriate type ('0000-00-00' or '0000-00-00 00:00:00').

Add some validation to your code:

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: Another problem is, that your code has a hole for some SQL injection attack, if you let user input the values on his own, without validation.



来源:https://stackoverflow.com/questions/34494900/mysql-saved-my-date-column-as-0000-00-00

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!