有没有办法在数据库中搜索自定义字符串并将其替换为新字符串? 我正在搜索的字符串可以出现在不同的表中,有时可以出现在同一个表的不同列中,所以基本上我要做的就是在任何地方搜索和替换。
答案 0 :(得分:1)
您需要一个类似的查询:
UPDATE [table_name]
SET [field_name] =
REPLACE([field_name],'[string_to_find]','[string_to_replace]');
对数据库中的每个相关表和/或字段重复。
答案 1 :(得分:0)
以下是PHP的解决方案:
<?php
// edit this line to add old and new terms which you want to be replaced
$search_replace = array( 'old_term' => 'new_term', 'old_term2' => 'new_term2' );
//change the localhost,username,password and database-name according to your db
mysql_connect("localhost", "username", "password") or die(mysql_error());
mysql_select_db("database-name") or die(mysql_error());
$show_tables = mysql_query( 'SHOW TABLES' );
while( $st_rows = mysql_fetch_row( $show_tables ) ) {
foreach( $st_rows as $cur_table ) {
$show_columns = mysql_query( 'SHOW COLUMNS FROM ' . $cur_table );
while( $cc_row = mysql_fetch_assoc( $show_columns ) ) {
$column = $cc_row['Field'];
$type = $cc_row['Type'];
if( strpos( $type, 'char' ) !== false || strpos( $type, 'text' ) !== false ) {
foreach( $search_replace as $old_string => $new_string ) {
$replace_query = 'UPDATE ' . $cur_table .
' SET ' . $column . ' = REPLACE(' . $column .
', \'' . $old_string . '\', \'' . $new_string . '\')';
mysql_query( $replace_query );
}
}
}
}
}
echo 'replaced';
mysql_free_result( $show_columns );
mysql_free_result( $show_tables );
mysql_close( $mysql_link );
?>