【发布时间】:2021-03-24 00:23:21
【问题描述】:
我正在构建一个分析图表,我需要在其中显示过去 30 天内每天的访问次数。我尝试使用下面的循环,但由于一个请求中发送了 30 个查询,它无法提取某些数据并大大减慢了页面加载时间。
有没有更好的方法从 MySQL 数据库中获取这些数据,同时节省服务器资源并改善页面的加载时间?任何帮助表示赞赏。
$conn = new mysqli("localhost", "db_host", "db_pwd", "db_name");
$d2 = date('c', strtotime('-29 days'));
$date = date("Y-m-d");
$begin = new DateTime($d2);
$end = new DateTime($date);
$end = $end->modify('+1 day');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
foreach($daterange as $date){
$current = $date->format("Y-m-d");
$sql = "SELECT COUNT(*) FROM stats WHERE link_id=$_GET[id] AND date='$current'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) { echo $row["COUNT(*)"]; }
} else { echo "no results";}
}
$conn->close();
【问题讨论】:
-
@Dharman 由于使用 SQL 查询提取的数据是在没有用户直接输入的情况下插入到数据库中的,因此该实例实际上是否需要准备好的语句?
-
是的,您应该始终使用它们。为什么你会选择不这样做?
标签: php mysql sql datetime recursive-query