maybe_convert_table_to_utf8mb4
If a table only contains utf8 or utf8mb4 columns, convert it to utf8mb4.
Description
maybe_convert_table_to_utf8mb4( (string) $table );
Parameters (1)
- 0. $table (string)
- The table to convert.
Usage
if ( !function_exists( 'maybe_convert_table_to_utf8mb4' ) ) { require_once ABSPATH . '/wp-admin/includes/upgrade.php'; } // The table to convert. $table = ''; // NOTICE! Understand what this does before running. $result = maybe_convert_table_to_utf8mb4($table);
Defined (1)
The function is defined in the following location(s).
- /wp-admin/includes/upgrade.php
- function maybe_convert_table_to_utf8mb4( $table ) {
- global $wpdb;
- $results = $wpdb->get_results( "SHOW FULL COLUMNS FROM `$table`" );
- if ( ! $results ) {
- return false;
- }
- foreach ( $results as $column ) {
- if ( $column->Collation ) {
- list( $charset ) = explode( '_', $column->Collation );
- $charset = strtolower( $charset );
- if ( 'utf8' !== $charset && 'utf8mb4' !== $charset ) {
- // Don't upgrade tables that have non-utf8 columns.
- return false;
- }
- }
- }
- $table_details = $wpdb->get_row( "SHOW TABLE STATUS LIKE '$table'" );
- if ( ! $table_details ) {
- return false;
- }
- list( $table_charset ) = explode( '_', $table_details->Collation );
- $table_charset = strtolower( $table_charset );
- if ( 'utf8mb4' === $table_charset ) {
- return true;
- }
- return $wpdb->query( "ALTER TABLE $table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" );
- }