2015-08-20 30 views
0

我正在学习/培训MySQL,PHP我是m 初学者在PHP 所以我试图做一个CRUD,所以我试图在数据库中保存日期。所以我在表单中使用了输入类型“DATE”。但ID没有做得很不错,它只是不插入日期只是将其保存为0000-00-00(MySQL的数据类型DATE) 在形式:在MySQL中保存日期? (PHP)

<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,如果有更好的方法来做到这一点,请给我推荐 预先感谢:-)

+0

你的值是字符串,所以需要引用它们:'values('$ ename','$ edate','$ eseas')'。注意你打开sql注入。阅读http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – Sean

回答

2

错误#1:你很容易受到sql injection attacks。转到此链接,阅读和你去更远的地方

错误#2之前了解的问题:你有没有引用你的价值观,所以你的PHP

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

会产生这种SQL:

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

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

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

自1987年不是一个有效的日期字符串(MySQL中期望的YYYY-MM-DD),你得到的清一色在您的数据库中记录零日期。

忽略注入问题,你需要:

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

同样地,对于任何其他字段值不是一个简单的数字。如果不引用字符串,字符串将被解释为字段/表名称,可能不存在。

+0

谢谢你,马克,似乎就像我解决了问题所以我愚蠢的: -/ 至于SQl注入,正如我所说的实际上是基本的MYSQL查询。所以我不认为现在事实上很重要。但是一旦我拥有基本的MySQL和PHP知识,我会研究MySQL漏洞和内容。 再次感谢:) – Cat