PHP/MySQL-如何根据给定的查询结果确定字段名?

PHP/MySQL-如何根据给定的查询结果确定字段名?,php,mysql,Php,Mysql,给定一个结果集,如何确定查询中指定的字段的实际名称(而不是别名) $query=“从人物中选择first作为first\u Name,last作为last\u Name”; $dbResult=mysql\u查询($query); $fieldCount=mysql\u num\u字段($dbResult); 对于($i=0;$i,如果您正在使用MySQLi: field对象具有“orgname”属性 与MySQL等效的“经典”函数不会报告原始列名。我不是100%确定这一点,但我想说:没有办法

给定一个结果集,如何确定查询中指定的字段的实际名称(而不是别名)

$query=“从人物中选择first作为first\u Name,last作为last\u Name”;
$dbResult=mysql\u查询($query);
$fieldCount=mysql\u num\u字段($dbResult);

对于($i=0;$i,如果您正在使用MySQLi:

field对象具有“orgname”属性


与MySQL等效的“经典”函数不会报告原始列名。

我不是100%确定这一点,但我想说:没有办法

MySQL只返回结果集,不返回select语句,也不返回任何有关它的详细信息


因此,您无法获取原始字段名,因为服务器将提供您询问的信息:别名。

简短回答:您没有


长答案:一旦MySQL提取数据集并将其发送回PHP,PHP现在唯一的信息就是列,如果您使用了这些列,那么别名就是。无法查看结果集并确定原始列名是什么。您必须切换到另一个数据库驱动程序(如mysqli)来获取这些信息。

您的问题没有意义电子感觉。 如果得到一个派生列,即

从订单中选择a列+b列作为订单合计

你是说你想知道原来的查询是a列+b列

如果是这样,您可能需要编写一个查询解析器,或者从internet上获取一个查询解析器


不过,我认为这一实现超出了您的问题范围:)

如果您不介意进行第二次查询(以及您使用的MySQL 5或更高版本),您可以询问
信息\u schema
以获取名称。 请查看以下详细信息:

显示tbl_名称中的列


如果您有权访问查询字符串,可以尝试使用正则表达式对其进行解析。 我不是正则表达式大师,但你可以通过查看“select”和“from”之间的文本,然后抓取所有字段名来切碎字符串

 field FieldAlias


如果您试图编写一些功能,让您知道要获取哪些字段来处理更新,那么正确执行此操作的唯一方法就是为上面的代码提供一个无SQL接口,并管理所有SQL生成本身。这称为数据抽象层

 field FieldAlias
 field as FieldAlias