PHP和MySQL中有效的关键词拆分和存储
在数据库管理中,你可能会遇到需要从其中提取和组织关键词的场景给定的字段。本文演示了一种使用 PHP 和 MySQL 来拆分关键字,将它们存储在专用表中,并使用中间表将它们链接回原始数据的优化方法。
问题陈述:
给定一个包含帖子 ID 和存储为逗号分隔列表的关联标签的表,任务涉及:
解决方案:
优化数据库架构:
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>
好处:
注意:提供的解决方案仅专注于核心功能,不考虑数据验证或错误处理等其他方面。
以上是如何在 PHP 和 MySQL 中拆分和存储逗号分隔列表中的关键字?的详细内容。更多信息请关注PHP中文网其他相关文章!