Heim  >  Artikel  >  Datenbank  >  Wie teile ich Schlüsselwörter aus einer durch Kommas getrennten Liste in PHP und MySQL auf und speichere sie?

Wie teile ich Schlüsselwörter aus einer durch Kommas getrennten Liste in PHP und MySQL auf und speichere sie?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 04:45:29713Durchsuche

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

Effektive Schlüsselwortaufteilung und -speicherung in PHP und MySQL

Bei der Datenbankverwaltung können Sie auf Szenarien stoßen, aus denen Sie Schlüsselwörter extrahieren und organisieren müssen ein bestimmtes Feld. Dieser Artikel zeigt einen optimierten Ansatz mit PHP und MySQL, um Schlüsselwörter aufzuteilen, sie in einer dedizierten Tabelle zu speichern und sie mithilfe von Zwischentabellen wieder mit den Originaldaten zu verknüpfen.

Problemstellung:

Angenommen eine Tabelle mit Beitrags-IDs und zugehörigen Tags, die als durch Kommas getrennte Liste gespeichert sind, umfasst die Aufgabe Folgendes:

  • Trennen von Tags in einzelne Schlüsselwörter
  • Speichern eindeutiger Schlüsselwörter in einem separate Tabelle
  • Herstellen von Zwischenverbindungen zwischen Beiträgen und Schlüsselwörtern

Lösung:

Optimiertes Datenbankschema:

  • Post_Tags: Speichert ursprüngliche Beitragsdaten und Tags als String
  • Schlüsselwörter: Speichert eindeutige Schlüsselwörter
  • Post_Keywords: Zwischentabelle, die Beiträge mit Schlüsselwörtern verknüpft

PHP-Code:

<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>

Vorteile:

  • Optimiertes Schema für effiziente Schlüsselwortabfragen
  • Gewährleistet die Eindeutigkeit von Schlüsselwörtern durch Verwendung der Schlüsselworttabelle
  • Bewahrt die Datenintegrität durch Zwischentabellenbeziehungen

Hinweis: Die bereitgestellte Lösung konzentriert sich ausschließlich auf die Kernfunktionalität und berücksichtigt keine zusätzlichen Aspekte wie Datenvalidierung oder Fehlerbehandlung.

Das obige ist der detaillierte Inhalt vonWie teile ich Schlüsselwörter aus einer durch Kommas getrennten Liste in PHP und MySQL auf und speichere sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn