Php 将日期插入mysql数据库

Php 将日期插入mysql数据库,php,mysql,Php,Mysql,我有一个简单的表单,它有一个值为的隐藏字段: <?php echo date('Y-m-d'); ?> 当我在处理页面上回显日期时,它显示良好 我已使用以下内容在数据库中设置了列: dateofentry date NOT NULL 如果上面有什么问题,您有什么想法吗?您必须使用此语法来创建sql查询: $sql=“插入wp_提醒(输入日期、ipaddress、类型)值(“”)。添加斜线($_POST['dateofentry'])。”,“”。添加斜线($_POST['ipad

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

<?php echo date('Y-m-d'); ?>
当我在处理页面上回显日期时,它显示良好

我已使用以下内容在数据库中设置了列:

 dateofentry date NOT NULL

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

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

$sql=“插入wp_提醒(输入日期、ipaddress、类型)值(“”)。添加斜线($_POST['dateofentry'])。”,“”。添加斜线($_POST['ipaddress'])。“,”。添加斜线($_POST['type'])。“)”

在您的示例中,您没有使用双引号包装索引键


而且你真的不应该把一个php变量放入一个字符串中,最好将它连接起来。

任何插入MySQL的日期都必须符合或转换。是首选格式,
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();

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

添加一个变量转储$\u post您的代码易受攻击。在进行查询之前,您需要使用数据库库的适当方法来转义数据。您发布的代码中似乎没有任何错误。我建议您回显
$sql
,以协助调试该问题。这将缩小问题所在的范围,也就是说,如果是SQL语句中提供的日期文本的问题,或者SQL语句是否正常,问题是否在MySQL服务器端。我刚刚完成了一个var转储,并发现以下内容[“dateofentry”]=>string(10)“02/11/2013”。不确定发生了什么,因为我已将日期设置为Y-m-DB在您开始手动处理SQL查询之前,请先试用一个。如果你遵循最佳实践,那么你在这里犯的错误将更难犯。请不要发布有巨大安全漏洞的答案。决不能将
$\u POST
数据直接插入查询字符串。连接与插值甚至都不是问题,根本不是“更好”。它们都是一样的。有人已经谈到了安全性,在不增加我的解释复杂性的情况下,更容易解释错误。此外,我的回答是关于他的问题,帮助解决问题,而不是教他如何安全。没有句号。上面的代码纯粹是为了测试,只是想知道是否有人能看到任何问题,而不是因为我的编码技巧而受到抨击。“连接与插值甚至都不是问题”,所以你是说如果php能够以良好的方式解析字符串来替换变量,那么最好忽略它?这也许就是{$\u POST[key]}可以被使用的原因。。。我在这里只是给你一个建议,评论我的答案有什么意义呢?告诉我答案是好是坏,你应该帮助他并给出你的答案。你的答案可以解决问题,而不包含危险的坏代码。我的意思是,就像丢了工作,毁了你的事业一样。逃避它,否则就不要发布它。这要求太高了吗?
$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();