Comment interroger la base de données dans un délai donné en php

藏色散人
Libérer: 2023-03-17 11:22:02
original
1710 Les gens l'ont consulté

Comment interroger la base de données sur une période donnée en PHP : 1. Utilisez la fonction "date_format" de mysql pour connaître d'abord toutes les commandes du mois en cours dans la sous-requête ; 2. Utilisez la fonction "date_format" pour convertir ; la date d'entrée en jours ; 3. Par jour Juste des statistiques de groupe "grouper par".

Comment interroger la base de données dans un délai donné en php

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 8.1, ordinateur Dell G3.

Comment interroger la base de données dans un délai donné en php ?

PHP+MySQL met en œuvre des exemples d'opérations d'optimisation statistique de données quotidiennes sur une période donnée

Dans les projets Internet, l'analyse des données du projet est essentielle. Habituellement, la tendance des modifications quotidiennes totales des données sur une certaine période de temps est calculée pour ajuster les stratégies marketing. Regardons les cas suivants.

Cas

Il existe généralement un formulaire de commande dans la plateforme de commerce électronique pour enregistrer toutes les informations de commande. Nous devons maintenant compter le nombre de commandes et le montant des ventes par jour au cours d'un mois donné pour dessiner le graphique statistique suivant pour l'analyse des données.

La structure des données du tableau de commande est la suivante :

order_id order_sn total_price enterdate
25396 A4E610E250C2D378D7EC94179E14617F 2306.00 2017-04-01 17:23:26
2539 7 EAD217C0533455EECDDE39659ABCDAE9 17.90 2017-04-01 22:15:18
25398 032E6941DAD44F29651B53C41F6B48A0 163.03 2017-04-02 07:24:36

Requête du nombre de commandes passées chaque jour du mois, comment calculer le montant total ?

Méthode générale

La première et la plus simple façon de penser est d'utiliser la fonction PHP cal_days_in_month() pour obtenir le nombre de jours dans le mois, puis de construire un tableau de tous les jours du mois, puis interrogez en boucle le nombre total de chaque jour, construisez un nouveau tableau. cal_days_in_month() 获取当月天数,然后构造一个当月所有天的数组,然后在循环中查询每天的总数,构造新数组。

代码如下:

$month = '04';
$year = '2017';
$max_day = cal_days_in_month(CAL_GREGORIAN, $month, $year);   //当月最后一天
//构造每天的数组
$days_arr = array();
for($i=1;$i<=$max_day;$i++){
  array_push($days_arr, $i);
}
$return = array();
//查询
foreach ($days_arr as $val){
  $min = $year.&#39;-&#39;.$month.&#39;-&#39;.$val.&#39; 00:00:00&#39;;
  $max = $year.&#39;-&#39;.$month.&#39;-&#39;.$val.&#39; 23:59:59&#39;;
  $sql = "select count(*) as total_num,sum(`total_price`) as amount from `orders` where `enterdate` >= {$min} and `enterdate` <= {$max}";
  $return[] = mysqli_query($sql);
}
return $return;
Copier après la connexion

这个sql简单,但是每次需要进行30次查询请,严重拖慢响应时间。

优化

如何使用一个sql直接查询出各天的数量总计呢?

此时需要利用 mysql 的 date_format 函数,在子查询中先查出当月所有订单,并将 enterdate 用 date_format 函数转换为 天 ,然后按天 group by

Le code est le suivant :

$month = &#39;04&#39;;
$year = &#39;2017&#39;;
$max_day = cal_days_in_month(CAL_GREGORIAN, $month, $year);   //当月最后一天
$min = $year.&#39;-&#39;.$month.&#39;-01 00:00:00&#39;;
$max = $year.&#39;-&#39;.$month.&#39;-&#39;.$max_day.&#39; 23:59:59&#39;;
$sql = "select t.enterdate,count(*) as total_num,sum(t.total_price) as amount (select date_format(enterdate,&#39;%e&#39;) as enterdate,total_price from orders where enterdate between {$min} and {$max}) t group by t.enterdate order by t.enterdate";
$return = mysqli_query($sql);
Copier après la connexion
Ce SQL est simple, mais il nécessite 30 requêtes à chaque fois, ce qui ralentit sérieusement le temps de réponse.

Optimisation

Comment utiliser un sql pour interroger directement la quantité totale de chaque jour ?

À ce stade, vous devez utiliser la fonction date_format de mysql pour d'abord connaître toutes les commandes du mois en cours dans la sous-requête, et utiliser la fonction date_format pour convertir la date d'entrée en jours, et puis grouper par Grouper les statistiques. Le code est le suivant : rrreee

De cette façon, en réduisant 30 requêtes à 1, le temps de réponse sera grandement amélioré. 🎜🎜🎜Remarque : 🎜🎜🎜1. Étant donné que toutes les données du mois en cours doivent être interrogées, cette méthode ne doit pas être adoptée lorsque la quantité de données est trop importante. 🎜🎜2. Afin d'éviter la perte de données causée par l'absence de données ce jour-là, après interrogation, les données doivent être traitées en fonction des besoins. 🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo PHP🎜"🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal