将日期插入数据库

时间:2014-01-10 00:18:57

标签: php mysql date

我正在尝试将一个出生日期插入到数据库中的一个表中,但它正在插入0000-00-00。我的表单采用date输入或<input type="date">。我的插入命令是:

   if (($myname = $_GET['your_name']) && ($phone = $_GET['phone']) && 
      ($dob = date('Y-m-d', strtotime($_GET['dob'])))) {
   $command = "INSERT INTO form_data (id, name, phone, dob) 
              VALUES ('', '".$db->real_escape_string($myname)."', 
              '".$db->real_escape_string($phone)."', '".$db->$dob."')";

$dob外,我的脚本无效。如何正确处理HTML5输入“日期”输入类型到数据库? (当我在这里尝试他们的建议时,我搜索但似乎没有工作)。

3 个答案:

答案 0 :(得分:1)

您将date('Y-m-d', strtotime($_GET['dob'])分配给$dob,但稍后您尝试将其引用为$db->$dob。您可能希望它像其他变量一样处理它并使用$db->real_escape_string($dob)

$command = "INSERT INTO form_data (id, name, phone, dob) 
  VALUES ('', '".$db->real_escape_string($myname)."', 
  '".$db->real_escape_string($phone)."', '".$db->real_escape_string($dob)."')";

为了使其更具可读性,我会使用sprintf

$command = sprintf("INSERT INTO form_data (id, name, phone, dob) VALUES ('', '%s',  '%s', '%s')",
  $db->real_escape_string($myname),
  $db->real_escape_string($phone),
  $db->real_escape_string($dob));

答案 1 :(得分:1)

我建议您格式化代码,以便更容易阅读,而不是在if块内进行分配。

$myname = $_GET['your_name'];
$phone = $_GET['phone'];
$dob = strtotime( $_GET['dob'] );

if( !empty( $myname ) && !empty( $phone ) && $dob !== false ) {
    $dob = date('Y-m-d', $dob );


    $stmt = $dbConnection->prepare('INSERT INTO form_data ( id, name, phone, dob ) VALUES ( \'\', ?, ?, ? )');
    $stmt->bind_param('s', $myname);
    $stmt->bind_param('s', $phone);
    $stmt->bind_param('s', $dob);

    $stmt->execute();

    $result = $stmt->get_result();
}

注意我是如何使用mysqli而不是mysql_的。它更安全。

答案 2 :(得分:0)

通过在$db->$dob集中使用VALUES,您尝试访问$db成员,并将其设置为$dob。您应该使用$dob代替。