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

Retrieves the maximum string length allowed in a given column.

Description

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

Parameters

$tablestringrequired
Table name.
$columnstringrequired
Column name.

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.
  • type string
    One of 'byte' or 'char'.
  • length int
    The column length.

Source

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

Changelog

VersionDescription
4.2.1Introduced.

User Contributed Notes

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