Maison >base de données >tutoriel mysql >Comment diviser et stocker des mots-clés à partir d'une liste séparée par des virgules en PHP et MySQL ?

Comment diviser et stocker des mots-clés à partir d'une liste séparée par des virgules en PHP et MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-04 04:45:29781parcourir

How to Split and Store Keywords from a Comma-Separated List in PHP and MySQL?

Partage et stockage efficaces des mots-clés dans PHP et MySQL

Dans la gestion de bases de données, vous pouvez rencontrer des scénarios dans lesquels vous devez extraire et organiser des mots-clés à partir de un domaine donné. Cet article démontre une approche optimisée utilisant PHP et MySQL pour diviser les mots-clés, les stocker dans une table dédiée et les lier aux données d'origine à l'aide de tables intermédiaires.

Énoncé du problème :

Étant donné un tableau contenant les identifiants de publication et les balises associées stockées sous forme de liste séparée par des virgules, la tâche implique :

  • Séparer les balises en mots-clés individuels
  • Stocker des mots-clés uniques dans un table séparée
  • Établissement de connexions intermédiaires entre les articles et les mots-clés

Solution :

Schéma de base de données optimisé :

  • Post_Tags : stocke les données de publication d'origine et les balises sous forme de chaîne
  • Mots clés : stocke des mots-clés uniques
  • Post_Keywords : Tableau intermédiaire reliant les publications aux mots-clés

Code PHP :

<code class="php">// Connect to the database
$mysqli = new mysqli($host, $user, $password, $database);

// Initialize variables
$stmt = $mysqli->prepare("SELECT post_id, tags_csv FROM post_tags");
$stmt->execute();
$result = $stmt->get_result();

// Loop through the post tags
while ($row = $result->fetch_assoc()) {
    $post_id = $row['post_id'];
    $tags = explode(',', $row['tags_csv']);

    // Insert unique keywords into the Keywords table
    foreach ($tags as $tag) {
        $stmt = $mysqli->prepare("INSERT IGNORE INTO keywords (name) VALUES (?)");
        $stmt->bind_param("s", $tag);
        $stmt->execute();
    }

    // Get keyword IDs and insert into Post_Keywords table
    foreach ($tags as $tag) {
        $stmt = $mysqli->prepare("SELECT keyword_id FROM keywords WHERE name = ?");
        $stmt->bind_param("s", $tag);
        $stmt->execute();
        $result = $stmt->get_result();
        $keyword_id = $result->fetch_assoc()['keyword_id'];

        $stmt = $mysqli->prepare("INSERT IGNORE INTO post_keywords (post_id, keyword_id) VALUES (?, ?)");
        $stmt->bind_param("ii", $post_id, $keyword_id);
        $stmt->execute();
    }
}</code>

Avantages :

  • Schéma optimisé pour des requêtes de mots clés efficaces
  • Garantit l'unicité des mots clés en utilisant la table Mots clés
  • Maintient l'intégrité des données grâce à des relations de table intermédiaires

Remarque : La solution fournie se concentre uniquement sur les fonctionnalités de base et ne prend pas en compte des aspects supplémentaires tels que la validation des données ou la gestion des erreurs.

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!

Déclaration:
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