wpdb::get_col_length()publicWP 4.2.1

Retrieves the maximum string length allowed in a given column.

The length may either be specified as a byte length or a character length.

Method of the class: wpdb{}

No Hooks.

Return

Array|false|WP_Error. Array of column length information, false if the column has no length (for example, numeric column), WP_Error object if there was an error.

Usage

global $wpdb;
$wpdb->get_col_length( $table, $column );
$table(string) (required)
Table name.
$column(string) (required)
Column name.

Changelog

Since 4.2.1 Introduced.

wpdb::get_col_length() code WP 6.5.2

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

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

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

	if ( empty( $this->col_meta[ $tablekey ][ $columnkey ] ) ) {
		return false;
	}

	$typeinfo = explode( '(', $this->col_meta[ $tablekey ][ $columnkey ]->Type );

	$type = strtolower( $typeinfo[0] );
	if ( ! empty( $typeinfo[1] ) ) {
		$length = trim( $typeinfo[1], ')' );
	} else {
		$length = false;
	}

	switch ( $type ) {
		case 'char':
		case 'varchar':
			return array(
				'type'   => 'char',
				'length' => (int) $length,
			);

		case 'binary':
		case 'varbinary':
			return array(
				'type'   => 'byte',
				'length' => (int) $length,
			);

		case 'tinyblob':
		case 'tinytext':
			return array(
				'type'   => 'byte',
				'length' => 255,        // 2^8 - 1
			);

		case 'blob':
		case 'text':
			return array(
				'type'   => 'byte',
				'length' => 65535,      // 2^16 - 1
			);

		case 'mediumblob':
		case 'mediumtext':
			return array(
				'type'   => 'byte',
				'length' => 16777215,   // 2^24 - 1
			);

		case 'longblob':
		case 'longtext':
			return array(
				'type'   => 'byte',
				'length' => 4294967295, // 2^32 - 1
			);

		default:
			return false;
	}
}