【发布时间】:2013-02-12 06:42:15
【问题描述】:
我有一个简单的表单,它有一个隐藏字段,其值为:
<?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
如果以上有什么问题,有什么想法吗?
【问题讨论】:
-
添加 $_POST 的 var_dump
-
您的代码容易受到SQL injection 的攻击。在进行查询之前,您需要使用数据库库的适当方法来转义数据。
-
您发布的代码似乎没有任何问题。我建议您回显
$sql以协助调试问题。这将缩小问题所在,即是否是 SQL 语句中提供的日期文字有问题,或者 SQL 语句是否正常并且问题出在 MySQL 服务器端。 -
我刚刚做了一个 var 转储,发现以下 ["dateofentry"]=> string(10) "02/11/2013"。不确定发生了什么,因为我已将日期设置为 Y-m-d
-
在开始手动使用 SQL 查询之前,请先尝试popular PHP framework。如果您遵循最佳实践,您在此处所犯的错误将更难解决。