2013-10-03 2 views
0

다음 해결책을 찾고 있지만 지금까지 행운이 없었습니다.선택 항목이 일치하는 경우 단어가있는 PHP/SQL 업데이트 필드

"feature"라는 텍스트 영역에 제품 기능 목록이있는 페이지가 있습니다. 이것은 데이터베이스의 테이블에서 채워집니다.

버튼을 클릭하면 아래 코드가 실행되고 코드는 내 목록에서 각 단어를 가져 와서 "설명"필드에 해당 단어가 포함되어 있는지 확인한 다음 해당 단어를 입력란에 넣습니다 "풍모".

잘 작동하지만 확인하려면 3,000 가지 "기능"및 100,000 가지 제품 설명이 있습니다. 따라서 실행 시간이 소요되고 시간이 오래 걸립니다.

누구나 내가 이것을 빠르게 할 수 있다고 조언 할 수 있습니까? 기본적으로 논리는 "설명", "단어"를 포함

경우 "단어"를 넣어

나는 어쩌면 배열에있는 모든 단어를 넣어의 생각

하지만 확인하는 방법을 모르는 어떤 배열의 단어가 "설명"에 있고이 값을 반환합니다.

모든 "기능"은 내 desc_lookup 테이블에 쉼표로 구분되어 저장되므로 쉽게 배열에 추가 할 수 있습니다.

$features = explode("\n",$_POST["features"]); 
$features = str_replace("\r","",$features); 

foreach($features as $feature) 
{ 
    $sql = "UPDATE `".$config_databaseTablePrefix."products` 
      SET features = CONCAT(features, '".$feature.",') WHERE `description` LIKE 
      '%".database_safe($feature)."%'"; 

    database_queryModify($sql,$result); 
} 

미리 감사드립니다. Chris

+0

전체 텍스트 사용 : http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html – RePRO

+0

감사합니다 RePRO, 빠른 예를 들어 주시겠습니까? 저는이 모든 것을 처음 접했습니다. – Walshie1987

답변

0

만약 내가 당신이라면, 데이터베이스에 제품을 입력하고이를 별도의 필드 (또는 다른 테이블)에 저장할 때이 키워드 검색을 수행 할 것입니다. 또는 캐싱 시스템을 사용하여 매번 모든 단일 제품에 대해이를 수행 할 필요가 없습니다.

+0

문제는 이러한 제품을 야간에 자동으로 가져오고 수동으로 입력하지 않는다는 것입니다. – Walshie1987

+0

이 과정에서 레코드를 입력 할 때마다 키워드를 찾는 과정이 없습니까? 그렇지 않은 경우, 기능이 할당되지 않은 모든 제품을 거치는 정기적 인 작업을 매일 실행해도됩니다. 그렇지 않으면 캐싱이 내가 생각하는 최선의 방법 일 것입니다. – Jonathon

관련 문제