我已插入除错误插入为 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注入攻击,如果您让用户自己输入值而不进行验证。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)