ホームページ  >  記事  >  データベース  >  PHP と MySQL でカンマ区切りのリストからキーワードを分割して保存する方法は?

PHP と MySQL でカンマ区切りのリストからキーワードを分割して保存する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-04 04:45:29688ブラウズ

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

PHP および MySQL での効果的なキーワードの分割と保存

データベース管理では、キーワードを抽出して整理する必要があるシナリオに遭遇することがあります。指定されたフィールド。この記事では、PHP と MySQL を使用してキーワードを分割し、専用のテーブルに格納し、中間テーブルを使用して元のデータにリンクし直すための最適化されたアプローチを示します。

問題ステートメント:

カンマ区切りのリストとして保存された投稿 ID と関連タグを含むテーブルがある場合、タスクには次のことが含まれます。

  • タグを個々のキーワードに分割する
  • 一意のキーワードを別のテーブル
  • 投稿とキーワード間の中間接続の確立

解決策:

最適化されたデータベース スキーマ:

  • Post_Tags: 元の投稿データとタグを文字列として保存します
  • Keywords: 固有のキーワードを保存します
  • 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。