<?php
    
/**************************************************
        Convert WP Content encoding
    
        BASISSCRIPT: Markus Tacker <m@tacker.org>
        Modified:    Frank Bueltge <bueltge.de>
    ***************************************************/

    // New coding
    
$new_encoding 'UTF-8';

    
// WordPress config
    
require_once '../wp-config.php';

    
// Connect DB
    
$DBC mysql_connect(DB_HOSTDB_USERDB_PASSWORD);
    
mysql_select_db(DB_NAME$DBC);

    
$table $wpdb->prefix.'comments';

    echo 
'<pre>';
        
$result_data mysql_query('SELECT * FROM ' $table);
        echo 
$table ' ';
        while (
$data mysql_fetch_assoc($result_data)) {
            
$sql 'UPDATE ' $table;
            
// Build set
            
$set = array();
            foreach (
$data as $key => $val) {
                
$set[] = ek($key) . '=' ev(mb_convert_encoding($data[$key], $new_encoding));
            }
            
$sql .= ' SET ' join(', '$set);
            
// Build where
            
$where = array();
            foreach (
$data as $key => $val) {
                if (!
preg_match('/[0-9]+/'$val)) continue; // Use only numbers in where
                
$where[] = ek($key) . '=' ev($data[$key]);
            }
            
$sql .= ' WHERE ' join(' AND '$where);
            
$query_result mysql_query($sql$DBC);
            if (!
$query_result) {
                die(
'Invalid query: ' mysql_error());
            }
            echo 
'.';
            
flush();
        }
        echo 
"\n";
    echo 
'All done.</pre>';

    
// Disconnect DB
    
mysql_close($DBC);

    function 
ek($string)
    {
        global 
$DBC;
        return 
"`" mysql_real_escape_string($string$DBC) . "`";
    }

    function 
ev($string)
    {
        global 
$DBC;
        return 
"'" mysql_real_escape_string($string$DBC) . "'";
    }
?>