3 回答
TA贡献1880条经验 获得超4个赞
而不是 a query,使用 aprepared statement更bind_param安全。然后只需比较日期以检查是否$res['datedue']通过。应该是这样的:
<?php
include_once("connection.php"); //including the database connection file
date_default_timezone_set('America/Los_Angeles'); //set the default time zone to your time zone (this is just an example)
$result = $conn->prepare("SELECT * FROM homework WHERE class_id=?");
$result->bind_param("i", (int)$_GET['id']);
$result->execute();
$result2 = $result->get_result();
?>
<html>
<head>
<title>View IS</title>
</head>
<body>
<table width='80%' border=0>
<tr bgcolor='#CCCCCC'>
<td>Task</td>
<td>Date Set </td>
<td>Date Due </td>
</tr>
<?php
while($res = $result2->fetch_array(MYSQLI_ASSOC)) {
if (date("Y-m-d") > $res['datedue']) {
echo "<tr style=\"color: red;\">";
echo "<td>".$res['description']."</td>";
echo "<td>".$res['dateset']."</td>";
echo "<td>".$res['datedue']."</td>";
echo "</tr>";
} else {
echo "<tr>";
echo "<td>".$res['description']."</td>";
echo "<td>".$res['dateset']."</td>";
echo "<td>".$res['datedue']."</td>";
echo "</tr>";
}
}
?>
</table>
</body>
您也可以使用$time = new DateTime;and then$time->format("Y-m-d")代替date("Y-m-d").
TA贡献1943条经验 获得超7个赞
您应该使用参数化的准备好的语句,而不是手动构建查询。
如果日期更大,我已经使用日期函数来比较日期,那么我已经放置了一些样式,而在其他情况下则没有样式。我已经给了你这个想法,现在你可以进行相应的修改。
<table width='80%' border=0>
<tr bgcolor='#CCCCCC'>
<td>Task</td>
<td>Date Set </td>
<td>Date Due </td>
</tr>
<?php
//while($res = mysql_fetch_array($result))
$current_date=date("Y-m-d");
while($res = mysqli_fetch_array($result)) {
if($current_date > $res['datedue'] ){
?>
<tr style='color:red;'>;
<?php
}else {
<tr>
}
echo "<td>".$res['description']."</td>";
echo "<td>".$res['dateset']."</td>";
echo "<td>".$res['datedue']."</td>";
</tr>
}
?>
</table>
TA贡献1963条经验 获得超6个赞
不要使用连接的原始 SQL。
使用变量绑定来防止 SQL 注入。
<?php
$stmt = $mysqli->prepare("SELECT * FROM homework where class_id= ?");
$stmt->bind_param('i', (int)$_GET['id']); // bind vairable and cast it to integer (it is a good practice when you get data from outside)
$stmt->execute();
$result = $stmt->get_result();
while($res = $result->fetch()){
// Your code here
var_dump($res);
}
我会建议使用PDO而不是mysqli. 您可以在此处阅读有关 SQL 注入的更多信息:如何防止 PHP 中的 SQL 注入?
不要使用select * (通配符)
SELECT description, dateset, datedue, datedue < NOW() AS is_expired FROM homework where class_id= ?
检查值is_expired以查看您将标记为红色的结果
我还没有尝试过代码,但我想它会按预期工作
- 3 回答
- 0 关注
- 121 浏览
添加回答
举报