基本上我有一个联系我们表格,我也想提交日期,当按下提交按钮时。基本上你填写框,提交,日期通过它。我只是不确定该怎么做......
我在另一个页面中的.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');
}
?>
答案 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.php和http://php.net/manual/en/function.error-reporting.php 并将其应用于您的代码。
您目前的代码向SQL injection开放。使用mysqli
with a prepared statement或PDO 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
都可以忽略
只能在表格中设置一个时间戳列。