maybe_convert_table_to_utf8mb4

函数
maybe_convert_table_to_utf8mb4 ( $table )
参数
  • (string) $table The table to convert.
    Required:
返回值
  • (bool) True if the table was converted, false if it wasn't.
定义位置
相关方法
maybe_create_tablewp_convert_bytes_to_hrwp_convert_hr_to_bytesmaybe_unserializerest_convert_error_to_response
引入
4.2.0
弃用
-

maybe_convert_table_to_utf8mb4: 这是WordPress中的一个函数,允许你将一个数据库表的字符集转换为UTF8MB4。 这个函数检查该表的字符集是否已经是UTF8MB4,如果不是,它将该表的字符集转换为UTF8MB4。

如果一个表只包含utf8或utf8mb4列,将其转换为utf8mb4。

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

常见问题

FAQs
查看更多 >