wpdb::get_col_charset( string $table, string $column ): string|false|WP_Error

In this article

Retrieves the character set for the given column.

Parameters

$tablestringrequired
Table name.
$columnstringrequired
Column name.

Return

string|false|WP_Error Column character set as a string. False if the column has no character set. WP_Error object if there was an error.

Source

public function get_col_charset( $table, $column ) {
	$tablekey  = strtolower( $table );
	$columnkey = strtolower( $column );

	/**
	 * Filters the column charset value before the DB is checked.
	 *
	 * Passing a non-null value to the filter will short-circuit
	 * checking the DB for the charset, returning that value instead.
	 *
	 * @since 4.2.0
	 *
	 * @param string|null|false|WP_Error $charset The character set to use. Default null.
	 * @param string                     $table   The name of the table being checked.
	 * @param string                     $column  The name of the column being checked.
	 */
	$charset = apply_filters( 'pre_get_col_charset', null, $table, $column );
	if ( null !== $charset ) {
		return $charset;
	}

	// Skip this entirely if this isn't a MySQL database.
	if ( empty( $this->is_mysql ) ) {
		return false;
	}

	if ( empty( $this->table_charset[ $tablekey ] ) ) {
		// This primes column information for us.
		$table_charset = $this->get_table_charset( $table );
		if ( is_wp_error( $table_charset ) ) {
			return $table_charset;
		}
	}

	// If still no column information, return the table charset.
	if ( empty( $this->col_meta[ $tablekey ] ) ) {
		return $this->table_charset[ $tablekey ];
	}

	// If this column doesn't exist, return the table charset.
	if ( empty( $this->col_meta[ $tablekey ][ $columnkey ] ) ) {
		return $this->table_charset[ $tablekey ];
	}

	// Return false when it's not a string column.
	if ( empty( $this->col_meta[ $tablekey ][ $columnkey ]->Collation ) ) {
		return false;
	}

	list( $charset ) = explode( '_', $this->col_meta[ $tablekey ][ $columnkey ]->Collation );
	return $charset;
}

Hooks

apply_filters( ‘pre_get_col_charset’, string|null|false|WP_Error $charset, string $table, string $column )

Filters the column charset value before the DB is checked.

Changelog

VersionDescription
4.2.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.