获取日期并通过mysqli插入发送?

时间:2016-05-27 22:29:24

标签: php mysql mysqli

基本上我有一个联系我们表格,我也想提交日期,当按下提交按钮时。基本上你填写框,提交,日期通过它。我只是不确定该怎么做......

我在另一个页面中的.php中有表单,但该操作会导致当前页面。

日期必须是:year-mm-dd

<?php

include 'connection.php';

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$question = $_POST['question'];
$date = //I need the date here so it can go through the insert propperly;


if ($_POST['submit']){

    mysqli_query($connect,"INSERT INTO contactusresults (`id`, `date`, `name`, `email`, `phone`, `question`) VALUES (NULL, '$date', '$name', '$email' , '$phone', '$question')") or die(mysql_error());


    header('Location: ../pages/index.php'); 
    //change to submit page 
}else{
    header('Location: ../pages/index.php');
}


?>

3 个答案:

答案 0 :(得分:1)

  

“日期必须是:年-mm-dd”

使用MySQL的CURDATE()函数,因为它返回YYYY-mm-dd。

VALUES (NULL, CURDATE(), '$name', ...

并确保将日期列设置为DATE类型。如果它现在是VARCHAR那么它将无效。

参考文献:

您还应在每个标题后添加exit;。否则,您的代码可能希望继续执行。

注意: mysql_error()需要读作mysqli_error($connect)。 MySQL_和MySQLi_ API不会混合。

您的连接方法未知,因此您需要使用与查询相同的连接方法,即MySQLi_ API。

参考:

如果它是MySQL_或PDO,那么这些将不适用于您的查询。不同的MySQL API不会混用。

您还应检查错误。

请参阅以下链接http://php.net/manual/en/mysqli.error.phphttp://php.net/manual/en/function.error-reporting.php 并将其应用于您的代码。

您目前的代码向SQL injection开放。使用mysqli with a prepared statementPDO with prepared statements它们更安全

<强> Foonotes:

  

“我在另一个页面中的.php中有表单,但操作会导致当前页面。”

目前尚不清楚。该操作需要导致您的查询代码。 “当前页面”(对我而言)表示action="html_form.php"action=""

因此需要将其更改为您用来查询的那个。

您还应使用empty()检查空字段。

另一件事。我注意到您在id列中使用了NULL。确保它接受NULL值,否则您的查询将失败。如果是这种情况,并且您的id是AUTO_INCREMENT,请按照以下''列使用id

VALUES ('', CURDATE(), '$name', ...

答案 1 :(得分:0)

使用php日期函数。

$date = date("Y-m-d H:i:s"); // If your mysql column is datetime
$date = date("Y-m-d"); // If your mysql column is just date

在sql中使用NOW()

mysqli_query($connect,"INSERT INTO contactusresults (`id`, `date`, `name`, `email`, `phone`, `question`) 
VALUES (NULL, NOW(), '$name', '$email' , '$phone', '$question')") or die(mysql_error());

答案 2 :(得分:0)

作为所选答案的替代选择:

在MySQL表上,您可以设置日期值的列以保存插入的timestamp,其中包含指定的日期,并且可以使用DATE_FORMAT函数调用。此方法将完全否定在插入时手动设置和保存日期值的需要。

表格设置:

CREATE TABLE `contactusresults` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `name` VARCHAR(256),
    `email` VARCHAR(256),
    `phone` VARCHAR(256),
    `question` VARCHAR(256),
    `date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
)

表格插入:

 mysqli_query($connect,"INSERT INTO contactusresults (`name`, `email`, `phone`, `question`) VALUES ( '$name', '$email' , '$phone', '$question')") or die(mysqli_error($connect));

从表格数据中提取日期:

$var = mysqli_query($connect, "SELECT `name`,DATE_FORMAT(`date`, '%Y-%d-%m') as `date` FROM contactusresults WHERE id = 1");

注意:

  • 您的MySQLi_error必须为mysqli_并且需要包含连接变量。

  • 插入时的任何NULL值,例如id都可以忽略

  • 只能在表格中设置一个时间戳列。