PHP和MySQL中有效的關鍵字分割和儲存
在資料庫管理中,你可能會遇到需要從中提取和組織關鍵字的場景給定的欄位。本文示範了一種使用 PHP 和 MySQL 來拆分關鍵字,將它們儲存在專用表中,並使用中間表將它們連結回原始資料的最佳化方法。
問題陳述:
給定一個包含貼文ID 和儲存為逗號分隔清單的關聯標籤的表,任務涉及:
解決方案:
最佳化資料庫架構:
:連結貼文與關鍵字的中間表
<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中文網其他相關文章!