2014-01-23 112 views
0

我试图在处理表格中插入日期,但在MySQL中插入像插入今天日期从形式到数据库

0000-00-00

我不希望用户插入日期。 这里是我的形式

<form action="upload.php" method="post" enctype="multipart/form-data"> 
<textarea type="text" name="text" cols="40" rows="10"></textarea><br /> 
<input type="hidden" name="dt"/> 
<input type="submit" name="upload" id="upload" value="Изпрати" /> 

这是upload.php的

<?php 

if (isset($_POST['upload'])) { 

$text = $_POST['text']; 
$dt = date('Y-m-d', strtotime($_POST['Date'])); 

     $db = new mysqli("localhost", "*****", "", "****"); 

     if (mysqli_connect_error()) { 
      printf("Connect failed: ", mysqli_connect_error()); 
     } 
     mysqli_set_charset($db, "UTF8"); 

     $query = "INSERT INTO table (text, date) VALUES (?, ?)"; 
     $conn = $db->prepare($query); 
     if ($conn == TRUE) { 
      $conn->bind_param("si",$text, $dt); 
      if (!$conn->execute()) { 
       echo 'error insert'; 
      } else { 
       header("Location: ../admin/index.php"); 
       exit; 
      } 
     } else { 
      die("Error preparing Statement"); 
     } 
} else { 
    echo 'error'; 
} 
?> 

可以采取什么问题吗?

编辑:

在MySQL日期排式 - '日期'

EDIT2:

我忘记NOW()...正在完善,就是这么简单。

+2

你的脚本里有'name =“dt”'和'$ _POST ['Date']'。 –

+2

为什么在今天的日期发布日期?只需创建日期并将其插入服务器端。 – naththedeveloper

+7

不是一个解决方案,但为什么不使用MySQL NOW()'? –

回答

5

我不希望用户插入日期。

然后,不要使其成为用户提交表单的一部分。现在,即使它是hidden元素,用户也可以修改它以插入他们想要的任何日期值。您不希望用户插入日期,但您当前的代码需要用户插入日期的

如果你只是希望它是一个系统知名的日期,你可以这样做完全是在数据库级别的INSERT声明:

INSERT INTO table (text, date) VALUES (?, NOW()) 

这样的数据库本身产生的当前日期,而不是依靠用户提交的任何内容。此时,您可以从表单中完全删除日期input,并从构建数据库查询的PHP代码中删除该参数。

+1

我的想法确切。即将写出,但好,太慢了。^^ –

1

如果您不希望用户是插入日期而不是在服务器端处理它。我的回答是使用PHP手柄否则,你也可以用NOW() mysql的侧handling.Choice上去给你:

$dt = date('Y-m-d: H:i:s'); 

也可以在DATABSE其存储为时间戳:

$dt=date("Y-m-d H:i:s"); 
$dt= strtotime($dt); 

和检索在前面

date("Y-m-d H:i:s",$dt) 
+6

或者只使用NOW()。 –

+0

是的,你可以,但为什么? MySQL和PHP都使用相同的服务器时间,因此它将是相同的。在PHP中这样做比较慢,更容易出错。 –

+0

这取决于他,我已经在他的方式回答:) –

0

在你的代码替换:

$查询=; “INSERT INTO表(文字,日期)VALUES(,NOW()?)”