0

我有一个简单的表单,它有一个隐藏字段,其值为:

<?php echo date('Y-m-d'); ?>

当我通过我的 php 处理脚本提交表单时,除了日期之外,表单上的所有内容都会进入数据库。

这是我的sql:

$sql = "INSERT INTO wp_reminders (dateofentry, ipaddress, type) VALUES ('$_POST[dateofentry]','$_POST[ipaddress]' ,'$_POST[type]')";

当我在处理页面上回显日期时,它显示正常。

我已经在我的数据库中设置了以下列:

 dateofentry date NOT NULL

如果上面有什么问题,有什么想法吗?

4

2 回答 2

0

任何插入 MySQL 的日期都必须符合MySQL 可以解析的格式之一,否则必须进行转换。ISO 8601通常是首选格式YYYY-MM-DD HH:MM:SS

如果您使用 PDO:

$sql = "INSERT INTO wp_reminders (dateofentry, ipaddress, type) VALUES (:dateofentry, :ipaddress, :type)";
$statement = $pdo->prepare($sql);
$statement->bindParam(":dateofentry", strtotime(date("Y-m-d H:i:s")), PDO::PARAM_STR);
$statement->bindParam(":ipaddress", $_POST['ipaddress'], PDO::PARAM_STR);
$statement->bindParam(":type", $_POST['type']), PDO::PARAM_STR);
$statement->execute();

除非您预计表单需要很长时间来处理,否则在创建查询时提供日期可能是有意义的。如果没有,您可以随时将该strtotime调用放入您的表单中。

于 2013-02-11T22:42:15.533 回答
-1

您必须使用此语法来创建您的 sql 查询:

$sql = "INSERT INTO wp_reminders (dateofentry, ipaddress, type) VALUES ('".addslashes($_POST['dateofentry'])."','".addslashes($_POST['ipaddress'])."' ,'".addslashes($_POST['type'])."')";

在您的示例中,您没有用双引号将索引键括起来......

而且您真的不应该将php变量放入字符串中,最好将其连接起来。

于 2013-02-11T22:19:25.757 回答