2011-04-07 3 views
1

Je suis en train d'enlever le "http://www.mydomain.com/?" de mes liens dans ma base de données, où il se trouve . Existe-t-il un moyen simple de le faire automatiquement?Trouver tous les liens dans MySQL qui contient une chaîne spécifique et l'enlever de tous

Mes liens sont sur la table wp_postmeta. La méta_key est appelée _tdomf_custom_permalink et les liens sont dans meta_value. Comme je l'ai dit, les liens ont cette structure http://www.mydomain.com/?http://www.anotherdomain.com/ et le http://www.mydomain.com/? doit être retiré.

Merci!

Répondre

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

Ajouter une clause WHERE et il commence à avoir l'air correct – RichardTheKiwi

+0

Vous pouvez passer sans clause WHERE dans cette requête si sous-ensemble de champs de données contenant "http://www.mydomain.com/?" est proportionnellement grand par rapport au nombre de tous les enregistrements dans wp_postmeta. Si petit, WHERE améliorerait la performance des requêtes, bien sûr. La clause WHERE ressemblerait à "WHERE _tdomf_custom_permalink like" http://www.mydomain.com/?% " – Nemoden

+0

O WH inclurait un double%. La raison en est de ne pas faire plus de CHANGEMENTS que nécessaire, pas tellement de RECHERCHE car il va scanner. Les modifications impliquent la journalisation, les déclencheurs potentiels, la mise à jour de l'index, etc. – RichardTheKiwi

0

Hy, qui est simple

$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'"); 
} 

Ce code est compréhensible pour vous si vous êtes un débutant, parce qu'il ya des façons de le faire en une seule requête SQL.

Questions connexes