@Hellek
Люблю говорить и слышать суть

Как получить параметры колонки при выборки данных через SELECT?

Ребят, привет. Нигде не нашел ответа на вопрос. Но реализовать задачу нужно в любом случае, если не нативными для MySQL запросами, то через pdo/php.

При запросе SELECT order_id FROM orders WHERE order_id = 113 (условно), нужно получить не только value, но и свойства колонки, например так

'orders.order_id' => [
    'value' => '113',    
    'type' => 'int',
    'length' => '11'
]


'orders.order_id' решается через
PDO::ATTR_FETCH_TABLE_NAMES

А как можно получить все остальное? Пусть даже параметры кроме значения будут в виде 'params' => 'int(11) unsigned primary'. Лишь бы это было в одном массиве вместе с результатами select
  • Вопрос задан
  • 322 просмотра
Пригласить эксперта
Ответы на вопрос 4
Использовать view information_schema:
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
  WHERE table_name = 'tbl_name' AND COLUMN_NAME = 'col_name';
Ответ написан
Immortal_pony
@Immortal_pony Куратор тега PHP
Получение информации в общем виде:
SELECT `COLUMN_TYPE`
FROM `information_schema`.`COLUMNS`
WHERE 1
AND `TABLE_SCHEMA`='schema.name' -- не знаю вашей, не забудьте поменять
AND `TABLE_NAME`='orders'
AND `COLUMN_NAME`='order_id'


Получение информации и присоединение ее к каждой строке:
SELECT 
	`orders`.`order_id`,
	`information_column_order_id`.`COLUMN_TYPE` AS 'order_id_column_type'
FROM 
	`orders`
	JOIN `information_schema`.`COLUMNS` AS `information_column_order_id` ON (
		 `TABLE_SCHEMA`='schema.name' -- не знаю вашей, не забудьте поменять
		AND `TABLE_NAME`='orders'
		AND `COLUMN_NAME`='order_id'
	)
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
Приджойнить подходящую вьюху из INFORMATION_SCHEMA. Вроде бы INFORMATION_SCHEMA.COLUMNS должна содержать нужные данные.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Сколько ответов, и ни одного правильного

PDOStatement::getColumnMeta
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы