Вопрос:

Mysql сохранил мою колонку дат как 0000-00-00?

mysql datetime format

1260 просмотра

1 ответ

201 Репутация автора

Я вставил все записи, за исключением части даты, которая была вставлена ​​неправильно, как 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.";
            }
        }
    }
Автор: Nur Selam Источник Размещён: 28.12.2015 01:57

Ответы (1)


2 плюса

2206 Репутация автора

Решение

Во всех случаях дата, сохраненная как 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-инъекцией , если вы позволяете пользователю вводить значения самостоятельно, без проверки.

Автор: Bfcm Размещён: 28.12.2015 02:06
Вопросы из категории :
32x32