wpdb::get_col_info()publicWP 0.71

Получает массив с информацией о колонках последнего запроса.

Если в запросе колонки не определены, то функция вернет информацию о всех колонках таблицы. Это может пригодится, когда был возвращен объект, о данных которого мы ничего не знаем.

Работает на основе кэша, поэтому сначала нужно сделать запрос используя get_results(), get_col(), get_var() и т.д. а потом вызвать эту функцию - она вернет данные колонок последнего запроса.

Метод класса: wpdb{}

Работает на основе: wpdb::load_col_info()

Хуков нет.

Возвращает

Разное. Данные колонок.

Использование

global $wpdb;
$wpdb->get_col_info( $info_type, $col_offset );
$info_type(строка)

Указывает какую информацию нам нужно получить. Список возможных значений:

  • name - название колонки.
  • table - название таблицы к которой принадлежит колонка.
  • max_length - максимальная длинна данных колонки.
  • not_null - 1 если ячейка колонки не может принимать значение NULL.
  • primary_key - 1 если колонка является первичным ключом.
  • unique_key - 1 если ячейки колонки должны быть всегда уникальны.
  • multiple_key - 1 если ячейки колонки могут быть не уникальны.
  • numeric - 1 если колонка содержит числовые данные.
  • blob - 1 если колонка содержит данные типа BLOB (двоичные данные).
  • type - тип колонки.
  • unsigned - 1 если колонка имеет тип данных UNSIGNED.
  • zerofill - 1 если колонка имеет тип данных ZEROFILL.

По умолчанию: name

$col_offset(число)

Указатель, информацию о какой колонке нужно получить:

  • -1 — будет получена информация о всех колонках в виде массива. По умолчанию.
  • 0, 1, 2, ... — будет возвращена информация об указанной колонке, где 0 - первая колонка, 1 - вторая и т.д.

По умолчанию: -1

Примеры

2

#1 Демонстрация работы

Сделаем запрос:

global $wpdb;

$results = $wpdb->get_results( "SELECT * FROM $wpdb->postmeta" );

Теперь получим данные о колонках таблицы этого запроса:

$cols_data = $wpdb->get_col_info( 'name' );
/*
Array
(
	[0] => meta_id
	[1] => post_id
	[2] => meta_key
	[3] => meta_value
)
*/

$cols_data = $wpdb->get_col_info( 'max_length' );
/*
Array
(
	[0] => 6
	[1] => 5
	[2] => 45
	[3] => 20205
)
*/

$cols_data = $wpdb->get_col_info( 'type' );
/*
Array
(
	[0] => 8
	[1] => 8
	[2] => 253
	[3] => 252
)
*/

Что будет если указать несуществующее имя колонки:

$cols_data = $wpdb->get_col_info( 'primary_key' );
/*
Notice: Undefined property: stdClass::$primary_key in /wpexample.com/public_html/wp-includes/wp-db.php on line 3435
Notice: Undefined property: stdClass::$primary_key in /wpexample.com/public_html/wp-includes/wp-db.php on line 3435
Notice: Undefined property: stdClass::$primary_key in /wpexample.com/public_html/wp-includes/wp-db.php on line 3435
Notice: Undefined property: stdClass::$primary_key in /wpexample.com/public_html/wp-includes/wp-db.php on line 3435

Array
(
	[0] =>
	[1] =>
	[2] =>
	[3] =>
)
*/

Чтобы получить данные отдельной колонки нужно указать её индекс во втором параметре:

echo $wpdb->get_col_info( 'name', 0 );       //> meta_id
echo $wpdb->get_col_info( 'name', 1 );       //> post_id
echo $wpdb->get_col_info( 'max_length', 0 ); //> 6
echo $wpdb->get_col_info( 'max_length', 1 ); //> 5

Список изменений

С версии 0.71 Введена.

Код wpdb::get_col_info() WP 6.5.2

public function get_col_info( $info_type = 'name', $col_offset = -1 ) {
	$this->load_col_info();

	if ( $this->col_info ) {
		if ( -1 === $col_offset ) {
			$i         = 0;
			$new_array = array();
			foreach ( (array) $this->col_info as $col ) {
				$new_array[ $i ] = $col->{$info_type};
				++$i;
			}
			return $new_array;
		} else {
			return $this->col_info[ $col_offset ]->{$info_type};
		}
	}
}