wpdb::get_col_info()
Получает массив с информацией о колонках последнего запроса.
Если в запросе колонки не определены, то функция вернет информацию о всех колонках таблицы. Это может пригодится, когда был возвращен объект, о данных которого мы ничего не знаем.
Работает на основе кэша, поэтому сначала нужно сделать запрос используя get_results(), get_col(), get_var() и т.д. а потом вызвать эту функцию - она вернет данные колонок последнего запроса.
Метод класса: wpdb{}
Хуков нет.
Возвращает
Разное
. Данные колонок.
Использование
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
Примеры
#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() wpdb::get col info WP 6.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}; } } }