【发布时间】:2011-12-16 18:12:13
【问题描述】:
这里是新手。当我在 WHERE 子句中输入日期('YYYY-MM-DD')时,效果很好。当我用从上一页传递的变量替换它时,WHERE 子句被忽略。是不是因为变量还没有创建?
<?php $name = $_POST["start"]; ?>
$query = "SELECT employees.first, employees.last, employees.street, employees.city,
employees.a, employees.b,
GROUP_CONCAT(empchecks.checknum ORDER BY empchecks.checkdate SEPARATOR '<br /> ') as
checknum,
GROUP_CONCAT(empchecks.checkdate ORDER BY empchecks.checkdate
SEPARATOR '<br /> ')
as checkdate
FROM employees
INNER JOIN empchecks ON employees.enum = empchecks.enum
WHERE empchecks.checkdate >= '$start' GROUP BY empchecks.enum";
【问题讨论】:
-
警告您的代码容易受到 sql 注入攻击!
-
你能验证$start的值吗?也就是说,如果你回显 $query,它会说什么?以及丹尼尔所说的,也是。 :) 而且它不太可能被忽视;相反,检查日期比较可能评估为真($start 是一个空字符串或任何被强制成为纪元开始的东西,等等)。
-
鉴于您的代码,
$start尚未定义。更重要的是,根据您清理输入变量的方式,变量插值技术可能会使您容易受到 SQL 注入攻击。 -
它是空的。但是,如果我在查询之外回显 $start,它会告诉我我在上一页输入的日期。