2011-04-07 4 views
1

내 데이터베이스의 내 링크에서 "http://www.mydomain.com/?"을 제거하려고합니다. . 자동으로 쉽게 할 수 있습니까?특정 문자열이 포함 된 MySQL의 모든 링크를 찾아서 모두 제거하십시오.

내 링크가 테이블 wp_postmeta에 있습니다. meta_key는 _tdomf_custom_permalink이고 링크는 meta_value에 있습니다. 내가 말했듯이 링크는이 구조가 http://www.mydomain.com/?http://www.anotherdomain.com/이고 http://www.mydomain.com/입니까? 제거해야합니다.

감사합니다. 단일 SQL 쿼리에서 그것을 할 수있는 방법이 있기 때문에

답변

2
UPDATE wp_postmeta set _tdomf_custom_permalink = replace(_tdomf_custom_permalink, 'http://www.mydomain.com/?', '') WHERE _tdomf_custom_permalink like 'http://www.mydomain.com/?%'
+0

WHERE 절을 추가하면보기 흉하게 나타납니다. – RichardTheKiwi

+0

"http://www.mydomain.com/?"이 포함 된 데이터 필드의 하위 집합 인 경우이 쿼리에서 WHERE 절없이 이동할 수 있습니다. wp_postmeta의 모든 레코드 수에 비례하여 커집니다. 작은 경우 쿼리 성능을 향상시킬 수있는 곳은 물론입니다. WHERE 절은 "WHERE _tdomf_custom_permalink like 'http://www.mydomain.com/?%'" – Nemoden

+0

과 같이 보입니다. 여기에는 이중 %가 포함됩니다. 그 이유는 필요한 것보다 많은 변경을하지 않는 것입니다. 검색 할 것이므로 많은 검색이 아닙니다. 변경 내용은 로깅, 잠재적 트리거, 인덱스 업데이트 등을 포함합니다. – RichardTheKiwi

0

숨바꼭질, 즉, 당신은 초심자 경우

$query = "SELECT links FROM tabe_name"; 
$result = msqyl_query($query); 
while($row = mysql_fetch_assoc($result)) { 
    $id = $row['id']; 
    $replace = str_replace("http://www.mydomain.com/?","",$row['links']); 
    $query_replace = mysql_query("UPDATE table_name SET link = '$replace' WHERE id = '$id'"); 
} 

이 코드는 당신에게 이해할 간단합니다.

관련 문제