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.


Top ↑

Parameters

$table string Required
Table name.
$column string Required
Column name.

Top ↑

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.

  • length int
    The column length.
  • type string
    One of 'byte' or 'char'


Top ↑

Source

File: wp-includes/class-wpdb.php. View all references

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


Top ↑

Changelog

Changelog
Version Description
4.2.1 Introduced.

Top ↑

User Contributed Notes

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