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 ?
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 :
Solution :
Schéma de base de données optimisé :
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 :
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!