从空的MySQL查询结果中检索列名

cho*_*ata 5 php mysql

有没有办法检索不返回数据的查询的列名?

我正在使用(某种)复杂的查询,例如:

SELECT 
    i.*,
    ic1.permalink as category_permalink, 
    ic1.title as category_title,
    ic1.sid as category_sid,
    ic2.permalink as hook_category_permalink,
    ic2.title as hook_category_title,
    ic2.sid as hook_category_sid
FROM item i
    LEFT JOIN item_to_item_category itic ON i.sid = itic.item_sid
    LEFT JOIN item_category ic1 ON ic1.sid = itic.item_category_sid
    LEFT JOIN item_category ic2 ON ic1.hook = ic2.sid
WHERE i.uid = ''
LIMIT 0,1 
Run Code Online (Sandbox Code Playgroud)

由于的原因,该查询的结果将为空WHERE i.uid = ""。没有结果时,如何找到列名?

请注意,我知道使用的解决方案DESCRIBEselect column_name from information_schema.columns where table_name='person';但是我需要一个更灵活的解决方案以适合这些多列查询。

另请注意,我仍在使用原始的PHP MySQL扩展(因此,没有MySQLi,也没有PDO)。

任何人?

out*_*tis 3

对于 PDO,请尝试PDOStatement->getColumnMeta(). 对于 mysqli,有mysqli_result->fetch_fields(),mysqli_result->fetch_field()mysqli_result->fetch_field_direct()。对于 mysql,将其替换为 PDO 或 mysqli。