// sample query - it might contain joins etc.
$query = 'select person.name, person.family, user.id from persons LEFT JOIN users ON persons.id = user.person_id';
$statement = $pdo->query($query);
$data = $statement->fetchAll(PDO::FETCH_CLASS);
if (isset($data[0])) {
// there is at least one row - we can grab columns from it
$columns = array_keys((array)$data[0]);
}
else {
// there are no results - no need to use PDO functions
$nr = $statement->columnCount();
for ($i = 0; $i < $nr; ++$i) {
$columns[] = $statement->getColumnMeta($i)['name'];
}
}
7条答案
按热度按时间5q4ezhmt1#
对于未知的查询字段,可以只使用此代码。
它给你每一行字段name=〉data,你甚至可以把键改为
''
,以得到按num排序的数组列,列的顺序遵循数据库中的列的顺序。ruyhziif2#
首先,准确地了解要检索的数据。然后查看数据库架构,找出数据库包含哪些表以及表包含哪些列。
以下查询返回数据库中每个表的每列的结果集:
在这个sqlfiddle中,它返回以下结果集(为简洁起见,这里将其截断):
现在我知道可以从表CHARACTER_SETS中选择列CHARACTER_SET_NAME,如下所示:
使用
mysqli::query
执行这些查询。z9ju0rcb3#
如果我理解了您的问题,您可能希望对结果集使用MySQLIi和fetch_fields方法:
http://us3.php.net/manual/en/mysqli-result.fetch-fields.php
参见该页上的示例。
pvabu6sv4#
如果您想在所有情况下都获得任何查询的列名,这并不容易。
如果至少返回一行,则可以直接从该行获取列。
但是当你想在没有结果显示表格/导出到CSV的情况下获取列名时,你需要使用不是100%可靠的PDO函数。
tktrz96b5#
使用
mysql_query()
并执行以下查询:示例:
92dk7w1h6#
使用
DESC table
或t30tvxxf7#
使用
fetch_fields