>데이터 베이스 >MySQL 튜토리얼 >PHP 및 MySQL의 쉼표로 구분된 목록에서 키워드를 분할하고 저장하는 방법은 무엇입니까?

PHP 및 MySQL의 쉼표로 구분된 목록에서 키워드를 분할하고 저장하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-04 04:45:29779검색

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으로 문의하세요.