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 中国語 Web サイトの他の関連記事を参照してください。