嗨,
我想通过MySQL查询显示日期特定的数据,我正在使用下面的查询;
SELECT SUM(qa_effort)
FROM tbl_uat
WHERE product='DAS'
AND uat_start_date >= '$date1'
上面的查询不仅显示>uat_start_date的数据,还显示<的数据,可能的原因是什么?
PHP代码:
<?php
$date1 = $_POST["date3"];
$date2 = $_POST["date4"];
if (is_null($date2) || $date2 === '' ){
$cmsc= mysql_query("SELECT SUM(qa_effort)
FROM tbl_uat
WHERE product='DAS'
AND uat_start_date >= '$date1'");
while ($cresult = mysql_fetch_array ($cmsc))
$arrda2[0] = $cresult[0];
echo $arrda2[0];
}
?>
在tbl_uat列中,uat_start_date类型为日期。
谢谢问候
- 如何防止 PHP 中的 SQL 注入?
-
mysql_*
已弃用。请改用mysqli_*
或PDO
。
在预准备语句示例中,它将如下所示:
$date1 = $_POST["date3"];
$date2 = $_POST["date4"];
if (is_null($date2) || $date2 === '' ) {
$q = $mysqli->prepare('SELECT SUM(qa_effort)
FROM tbl_uat
WHERE product="DAS"
AND uat_start_date >= ?
');
$q->bind_param('s', $date1);
$q->execute();
$q->bind_result($sum);
while ($q->fetch()) {
echo $sum;
}
}
mysqli
文档
当然,您应该验证$date1
日期格式是否正确,例如Y-m-d
。