PHP:将日期插入表中

时间:2014-08-17 11:51:53

标签: php datetime

我的表“列表”包含一个字段:“date_”类型的“exam_date”。 该表中的日期格式如下:“2014-08-31 21:45:47”(yyyy-mm-dd hh:ii:ss)。 在我的输入表单中,日期分配方式如下:

<input id="exam_date" name="exam_date" type="datetime" placeholder="<?php echo date('d-m-y H:i:s'); ?>">

为了看到我添加到我的代码中的值assigne:

$myDate = trim($_POST['exam_date']);
echo trim($_POST['exam_date']);

在显示屏上,我看到按以下结构插入的日期:31-08-14 21:45:47。 我将代码插入表中的代码是:

<?php
date_default_timezone_set('xxx');
$dbcon = @mysqli_connect ('xxx', 'xxx', 'xxx', 'test') OR die ('Could not connect to MySQL: ' . mysqli_connect_error () ); 
mysqli_set_charset($dbcon, 'utf8');
if (isset($_POST['exam_date']))
{
 $myDate = trim($_POST['exam_date']);
 echo $myDate ;
 $q = "INSERT INTO list (exam_date) VALUES ($myDate)"; 
 $result = @mysqli_query ($dbcon, $q); 
 if($result)
 {
   echo "record added";
 }
 else
 {
   echo "no record added !";
 }
}
?>
<form action="add_date.php" method="post">
<input id="exam_date" name="exam_date" type="datetime" placeholder="<?php echo date('y-m-d H:i:s'); ?>">
<input id="submit" type="submit" name="submit" value="Register">
</form>

当我运行它时,我得到:“没有添加记录”,当我查看表格时,我发现确实没有添加任何记录。 我相信无法添加记录的原因是日期结构的差异:表格和输入的差异。 我可以将表格中的日期结构更改为“dd-mm-yy hh:ii:ss”吗? 有没有办法将输入结构从“dd-mm-yy hh-ii-ss”转换为“yyyy-mm-dd hh:ii:ss”? 谢谢!

3 个答案:

答案 0 :(得分:1)

此代码更安全,因为它使用预准备语句http://php.net/manual/en/mysqli.prepare.php

永远不要相信用户输入的变量!

请注意提交按钮上的name="",我们正在检查表单是否已提交

始终正确关闭您的表单inputs />

时区.. https://www.youtube.com/watch?v=-5wpm-gesOY

如果您想INSERT用户输入datetime,请尝试以下操作:

<强> add_date.php:

<?php
date_default_timezone_set('xxx');
$link = mysqli_connect("localhost", "my_user", "my_password", "db_name");
mysqli_set_charset($link, 'utf8');
if (isset($_POST['register'])) {

    $myDate = $_POST['exam_date'];

    /* check connection */
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    if ($stmt = mysqli_prepare($link, "INSERT INTO list (exam_date) VALUES (?)")) {

        /* bind parameters for markers */
        mysqli_stmt_bind_param($stmt, "s", $myDate);

    /* execute query */
    if(mysqli_stmt_execute($stmt)) {
        echo "record added";    
    }
    else {
        echo "no record added !";   
    }
        /* close statement */
        mysqli_stmt_close($stmt);
    }
    /* close connection */
    mysqli_close($link);
}

表格:

<form action="add_date.php" method="post">
<input id="exam_date" name="exam_date" type="datetime" value="<?php echo date('y-m-d H:i:s'); ?>" />
<input id="submit" type="submit" name="register" value="Register" />
</form>

答案 1 :(得分:0)

请告诉我你使用的原因

date_default_timezone_set()

if you dont need that than just simply run this query 
if ($_SERVER['REQUEST_METHOD']=="POST")
{
    $query="INSERT INTO id (date) Values (now())";
    $result=  mysqli_query($con, $query)or die(mysqli_error($con));
if($result)
{
    echo 'success';
}
else {
    echo 'failed';
}

答案 2 :(得分:0)

感谢所有试图帮助我的人。 我在&#34; youtube&#34;:

上找到了这段代码
<!doctype html>
<html lang=en>
<head>
    <title>Insert Date</title>
    <meta charset=utf-8>
</head>
<body>
<?php
    $raw = "2014 08 18 17 45 00"; 
    $xplod = explode(' ', $raw);
    print_r($xplod);
    $string=$xplod[0].'-'.$xplod[1].'-'.$xplod[2].' '.$xplod[3].':'.$xplod[4].':'.$xplod[5];
    echo "<br/>$string";
    $date = date("y-m-d H:i:s", strtotime($string));
    echo "<br/> $date";
    $dbcon = @mysqli_connect ('xxx', 'xxx', 'xxx', 'test') 
        OR die ('Could not connect to MySQL: ' . mysqli_connect_error () ); 
    mysqli_set_charset($dbcon, 'utf8');
    $q = "INSERT INTO list VALUES ('$date')"; 
    $result = @mysqli_query ($dbcon, $q); 
    if ($result)
    {
        echo "record added";
    }
    else
    {
        echo "record not added";
    }
?>
</body>
</html>

对于像我这样的初学者来说这是令人满意的。