【发布时间】:2014-01-25 05:12:59
【问题描述】:
我是 PHP 新手,目前正在编写一个系统,工作人员可以记录班次,客户部门可以打印要支付的金额等
我需要显示给客户部门成员的表格,以便在日期范围内进行查询。我的代码似乎可以工作,但是它只能检索单个日期,而不是日期范围。
代码如下:
$shiftdata = mysqli_query($connection, "SELECT * FROM tablename_shift INNER JOIN
tablename_staff ON tablename_shift.uniqueid = tablename_staff.uniqueid WHERE
shift_date BETWEEN '".$_POST['to_date']."' AND '".$_POST['from_date']."'
ORDER by shiftid ASC")
由于代码适用于单日期范围,我最初的想法是错误可能在于我存储日期的方式。我最初以 DD/MM/YY 格式将它们存储为 VARCHAR(30),后来将其更改为 YYYY/MM/DD 格式的 DATE,以与 MySQL 存储日期的方式兼容。
任何帮助将不胜感激。
【问题讨论】:
-
您的代码极易受到攻击。无论如何,只要您的帖子变量(我再次指出不应该在没有卫生条件的情况下直接放入查询中)格式正确,这应该可以工作。
-
将数据类型更改为日期或日期时间。
-
您的表结构现在如何...您现在是否将它们存储在日期类型字段而不是 varchar 中...它们现在存储是否正常...以及旧值,您呢将它们转换为新格式?
-
如果您知道如何改进我的代码的漏洞,请详细说明。
-
这是一个被广泛讨论的话题。查看prepared statements和sql注入