Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- ini_set('max_execution_time', '0');
- ini_set("max_input_time", '0');
- set_time_limit(0);
- error_reporting(E_ALL);
- define('DBHOST', 'localhost');
- define('DBUSER', 'user');
- define('DBPASS', 'pass');
- define('DBNAME', 'database');
- define('DBPORT', 3306);
- define('DBPREFIX', '');
- $db = new mysqli(DBHOST, DBUSER, DBPASS, DBNAME);
- if ($db->connect_error) {
- die('Connect Error (' . $db->connect_errno . ') '. $db->connect_error);
- }
- echo 'Converting the content from latin1 to utf8 ...' . PHP_EOL;
- $table = 'ads';
- $pk = 'id';
- $latin1Column = 'content';
- $failedColumn = 'failed';
- //Creating a new failed column for store state
- $db->query("ALTER TABLE {$table} ADD COLUMN {$failedColumn} TINYINT(1) UNSIGNED DEFAULT 0 NOT NULL AFTER {$pk}");
- $limit = 1000;
- $counter = 1;
- $i = 0;
- while($counter) {
- $counter = 0;
- $offset = $i * $limit;
- $sql = "SELECT SQL_NO_CACHE {$pk}, CONVERT(BINARY CONVERT({$latin1Column} USING latin1) USING utf8) AS content FROM {$table} ORDER BY {$pk} LIMIT {$offset}, {$limit}";
- if ($result = $db->query($sql)) {
- if ($result->num_rows) {
- $counter = $result->num_rows;
- while($rows = $result->fetch_assoc()){
- $id = $rows[$pk];
- $res = $db->query("UPDATE {$table} SET $latin1Column = '{$rows['content']}' WHERE {$pk} = {$id}");
- if(!$res) {
- $db->query("UPDATE {$table} SET $failedColumn = 1 WHERE {$pk} = {$id}");
- }
- }
- $result->free();
- }
- $result->free();
- }
- $i++;
- }
- $db->close();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement