我有几个(非常标准的)(MySQL)查询,如下所示:
select *
from table_one a
left join table_two on a.id = b.id
left join table_three c on b.id = c.id.
table_one 看起来像这样:
id (int)
label (varchar(15)
table_two 看起来像这样:
id (int)
name (varchar(20)
table_三看起来像这样:
id (int)
some_field_name (varchar(25)
所以结果是这样的:
id|label|id|name|id|some_field_name|
..|.....|..|....|..|...............|
现在,我想要的是一个列表,其中包含他的查询将生成的列名(最好还有列类型)
像这样
id(int)
label (varchar(15)
id (int)
name varchar(20)
id (int)
some_field_name (varchar(25)
我知道我可以使用 INFORMATION_SCHEMA.COLUMNS 表来获取此信息,但我仍然必须为每个表手动运行此查询并自己“编写”每个查询的列表。
我更喜欢一个可以提供查询的函数,然后返回字段名+字段类型的列表。
最佳答案
我们在 php 中有 $stmt->getColumnMeta() 来获取列的元数据
<?php
$user = 'root';
$pass = 'infiniti';
$DB = 'test';
$host = 'localhost';
$c = new \PDO('mysql:host='.$host.';dbname='.$DB, $user, $pass);
$c->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$dataQuery = 'select * from info limit 3';
$stmt = $c->prepare($dataQuery);
$stmt->execute();
$rs = $stmt->fetchAll(\PDO::FETCH_ASSOC);
echo $stmt->columnCount();
for($i = 0; $i < $stmt->columnCount(); $i++)
{
print_r($stmt->getColumnMeta($i));
}
output
Array
(
[native_type] => LONG
[pdo_type] => 2
[flags] => Array
(
[0] => not_null
[1] => primary_key
)
[table] => info
[name] => id
[len] => 11
[precision] => 0
)
Array
(
[native_type] => VAR_STRING
[pdo_type] => 2
[flags] => Array
(
)
[table] => info
[name] => fname
[len] => 60
[precision] => 0
)
Array
(
[native_type] => VAR_STRING
[pdo_type] => 2
[flags] => Array
(
)
[table] => info
[name] => lname
[len] => 60
[precision] => 0
)
关于python - 从查询中获取列表列名称+数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56109042/