在MySQL中保存日期? (PHP)

时间:2015-08-20 19:27:06

标签: php mysql

我正在学习/培训MySQL,PHP我是初学者在PHP 所以我试图制作一个CRUD,所以我试图在数据库中保存日期。所以我在表单中使用输入类型“DATE”。但是id没有很好地工作它只是不插入日期只是将它保存为0000-00-00(MySQL数据类型DATE) 形式:

    <input type="date" name="release">

在这里。

if (isset($_GET['submit'])) {
 $ename= $_GET['name'];
 $edate= $_GET['release'];
 $eseas= $_GET['season'];

 $insert= "INSERT into episodes (name, date, season) values($ename,$edate,$eseas) ";

我只是在学习PHP,如果有更好的方法,请推荐我 在此先感谢:-)

1 个答案:

答案 0 :(得分:2)

错误#1:您容易受到sql injection attacks的攻击。转到此链接,阅读并理解问题,然后再进一步

错误#2:您还没有引用您的值,因此您的PHP

$sql = "INSERT ... VALUES(...,$edate,...)"

将产生这个SQL:

INSERT ... VALUES (...,2015-08-20,...)

由于您的日期值没有引号,因此它并不是真正的日期。它是一个数学减法,你真的在​​做2015-8-20 => 1987,查询被扩展为

INSERT ... VALUES (...,1987,...)

由于1987年不是一个有效的日期字符串(mysql期望yyyy-mm-dd),你的数据库中会得到全零日期。

忽略注射问题,您需要:

$insert= "INSERT into episodes (name, date, season) values($ename,'$edate',$eseas) ";
                                                                  ^------^

类似地,对于任何其他不是普通数字的字段值。如果您不引用字符串,则字符串将被解释为字段/表名称,这可能不存在。