Comment synchroniser la visualisation des enregistrements sur MySQL avec PHP

PHPz
Libérer: 2023-04-12 10:20:58
original
547 Les gens l'ont consulté

Récemment, j'écrivais un site Web de visionnage de vidéos en utilisant PHP et j'ai découvert qu'une exigence très courante consiste à enregistrer l'historique de visionnage de l'utilisateur dans la base de données et à le mettre à jour de manière synchrone à tout moment. Sur la base de cette exigence, j'ai essayé diverses méthodes d'implémentation et j'ai finalement choisi la solution consistant à synchroniser la visualisation des enregistrements avec la base de données MySQL. Cet article expliquera comment j'utilise PHP pour synchroniser la visualisation des enregistrements avec MySQL.

Tout d'abord, j'ai créé une table nommée watch_history dans la base de données MySQL, qui contient les champs suivants : id, user_id, video_id etcreated_at. Parmi eux, id est la clé primaire, user_id fait référence à l'ID de l'utilisateur, video_id fait référence à l'ID de la vidéo regardée et create_at fait référence à l'heure de création de l'enregistrement.

Ensuite, dans le code PHP, j'ai créé une classe appelée WatchHistory, qui comprend les méthodes suivantes :

  1. add($userId, $videoId) : Ajouter l'enregistrement de visionnage d'un nouvel utilisateur
  2. getList($ userId) : Récupérer le liste des enregistrements de surveillance de l'utilisateur spécifié
  3. clean($userId) : efface tous les enregistrements de surveillance de l'utilisateur spécifié

Dans la méthode add, j'utilise l'instruction INSERT INTO pour ajouter un enregistrement à la table watch_history. L'exemple de code est le suivant :

public function add($userId, $videoId) {
    $created_at = date('Y-m-d H:i:s');
    $sql = "INSERT INTO watch_history (user_id, video_id, created_at) VALUE ('$userId', '$videoId', '$created_at')";
    // 执行 MySQL 插入操作
    // ...
}
Copier après la connexion

Dans la méthode getList, j'utilise l'instruction SELECT pour obtenir tous les enregistrements de surveillance de l'utilisateur spécifié à partir de la table watch_history. L'exemple de code est le suivant :

public function getList($userId) {
    $sql = "SELECT * FROM watch_history WHERE user_id = '$userId' ORDER BY created_at DESC";
    // 执行 MySQL 查询操作
    // ...
}
Copier après la connexion

Dans la méthode clean, j'utilise l'instruction DELETE pour supprimer tous les enregistrements de surveillance de l'utilisateur spécifié de la table watch_history. L'exemple de code est le suivant :

public function clean($userId) {
    $sql = "DELETE FROM watch_history WHERE user_id = '$userId'";
    // 执行 MySQL 删除操作
    // ...
}
Copier après la connexion

Enfin, afin d'éviter des connexions et fermetures fréquentes des connexions à la base de données, j'ai utilisé une classe singleton nommée Database pour gérer la connexion à la base de données MySQL. L'exemple de code est le suivant :

class Database {
    private static $_instance;
    private $_pdo;
    private function __construct() {
        // 连接 MySQL 数据库
        // ...
    }
    public static function getInstance() {
        if (!self::$_instance) {
            self::$_instance = new self();
        }
        return self::$_instance;
    }
    public function query($sql, $params = null) {
        $stmt = $this->_pdo->prepare($sql);
        $stmt->execute($params);
        return $stmt;
    }
}
Copier après la connexion

À ce stade, j'ai implémenté avec succès la fonction de synchronisation de la visualisation des enregistrements avec la base de données MySQL. Bien qu’il ne s’agisse que d’un exemple simple, je pense que cette solution est également réalisable dans le cadre d’un développement réel. J'espère que mon expérience pourra être utile à tous les développeurs 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!

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