2011-03-21 87 views
0

我正在使用html <select><option>窗体来收集用户的数据。但是,当我试图将出生日期保存到数据库时,我陷入了困境。 这里就是我想要做:php插入mysql的出生日期

$dob = $_POST['year'] . '-' . $_POST['month'] . '-' .$_POST['day']; 

$insertInto = " INSERT INTO `users`.`information` (id, useremail, password, firstname, lastname, gender, dob, telephone) 
VALUES (NULL, '$_POST[email]','$_POST[password]','$_POST[firstname]','$_POST[lastname]','$_POST[formGender]','$dob', '$_POST[telephone]')"; 

它适用于一切,但$dob,可能有人指导我发现这个错误吗?

非常感谢。

+1

你永远不应该通过用户的字符串直接到PHP。如果用户输入像NULL这样的电子邮件会怎么样; DROP TABLE用户; --'?使用mysql_real_escape_string始终避免用户输入。 – ChrisJ 2011-03-21 21:29:28

+0

我会检查ISSET,然后进行验证,我只是没有在那个点上。感谢您的提示:) – Karl 2011-03-21 21:32:54

+0

这不是一个真正的现实载体ChrisJ,我碰巧与其分享名字/最后一个字母。我会反而做类似于:'email =',firstname = SELECT password FROM users.information where useremail='[email protected]','','','','')' – Chris 2011-03-21 21:35:59

回答

0

首先在执行查询调用之前检查$ dob的值。然后,如果它看起来很好(例如1984-10-10),那么让你的dob是日期/日期时间。

现在,你得到了什么错误?它被设置为全0还是什么?

注意:您将被暴露给SQL注入。我总是推荐使用PDO和几乎任何SQL查询的准备语句。 http://mx.php.net/manual/en/pdo.prepare.php

+0

我开始了所有O's 。谢谢,我要去试试:) – Karl 2011-03-21 21:36:21

+0

我得到了0000-00-00。我试图回显我的$ dob varialbe它的回显权限,但是当我在phpmyadmin中看到那里是0000-00-00。在回声中我得到了1997-06-12 – 2015-11-06 07:21:33

2

如果你不介意使用unix的时代,你可以简单地把你的用户输入并做一个简单的strtotime()。它会给你更多的灵活性,以及​​如何使用date()函数显示它。

$dob = "1/1/1985"; 
$string = strtotime($dob); 

然后吐出来:

$data = pull epoch result from database 
$birthday = date("m/d/Y", $data);