首页  >  文章  >  数据库  >  如何在 PHP 和 MySQL 中拆分和存储逗号分隔列表中的关键字?

如何在 PHP 和 MySQL 中拆分和存储逗号分隔列表中的关键字?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-04 04:45:29682浏览

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

PHP和MySQL中有效的关键词拆分和存储

在数据库管理中,你可能会遇到需要从其中提取和组织关键词的场景给定的字段。本文演示了一种使用 PHP 和 MySQL 来拆分关键字,将它们存储在专用表中,并使用中间表将它们链接回原始数据的优化方法。

问题陈述:

给定一个包含帖子 ID 和存储为逗号分隔列表的关联标签的表,任务涉及:

  • 将标签分隔为各个关键字
  • 将唯一关键字存储在单独的表
  • 在帖子和关键字之间建立中间连接

解决方案:

优化数据库架构:

  • Post_Tags:将原始帖子数据和标签存储为字符串
  • 关键字:存储唯一关键字
  • Post_Keywords:链接帖子与关键字的中间表

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn