【问题标题】:How to retrieve date value from POST method?如何从 POST 方法中检索日期值?
【发布时间】:2015-01-13 07:00:21
【问题描述】:

我在 HTML 代码中有以下日期输入框:

<input type="date" name="DOB" size="20">

使用 POST 方法将表单数据传递到不同的 PHP 文件。然后将日期保存到变量中。

$DOB=$_POST['DOB'];

当我回显这个变量时,它会打印保存在其中的日期值。但是,如果我在查询中使用此变量,则不会读取该值。该查询不返回任何值。

这是我的查询:

"SELECT site_no, name,NIC,gender,address,telephone FROM employee WHERE emp_no=$emp_no AND DOB=$DOB"

【问题讨论】:

  • 从不做这个查询,它对 sql 注入开放,你可能会丢失所有数据库
  • 使用单引号 DOB='$DOB'
  • 在查询中使用$DOB 周围的单引号,如果这不起作用,则检查$_POST['DOB'] 的格式。格式应与 DB 格式相同,即YYYY-mm-dd

标签: php html mysql


【解决方案1】:

试试这个

在日期中使用单引号(假设您在 $DOB 变量中获得日期值)

"SELECT site_no, name,NIC,gender,address,telephone FROM employee WHERE emp_no=$emp_no AND DOB='$DOB'"

编辑

MySQL 期望 DATE 和 DATETIME 文字值作为字符串单引号,例如 '2001-01-01 00:00:00'

【讨论】:

  • 如果您添加一些关于您所做更改的注释将会很有帮助。没有它,它不会教 OP 任何东西。
  • 如果你包括为什么这在没有单引号的情况下不起作用,它会提供更多信息
【解决方案2】:

您需要用单引号将变量括起来。使用下面的代码

"SELECT site_no, name,NIC,gender,address,telephone FROM employee WHERE emp_no='$emp_no' AND DOB='$DOB'"

希望对你有帮助

【讨论】:

  • “你需要用单引号将变量括起来”——这并不完全正确。
【解决方案3】:

为了可见性,最好在 SQL 中添加引号。了解您正在使用的类型并转义这些值很重要,尤其是对于这样的情况。
您的查询带有引号和缩进以提高可见性:

SELECT 
    `site_no`, `name`, `NIC`, `gender`, `address`, `telephone` 
FROM 
    `employee` 
WHERE 
    `emp_no` = '$emp_no' 
AND
    `DOB` = '$DOB'

保存日期的最佳做法是使用 DATE/DATETIME 或时间戳。您需要验证 DOB 格式和输入,去除不必要的字符等。查找 PHP 的 real_escape_stringtimedate

【讨论】:

    【解决方案4】:

    $DOB 使用单引号

      "SELECT site_no, name,NIC,gender,address,telephone FROM employee WHERE emp_no=$emp_no AND DOB='$DOB'"
    

    【讨论】:

      猜你喜欢
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多