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

use*_*418 4 php mysql

给定结果集,我如何确定查询中指定的字段的实际名称(不是它们的别名).

$query = "SELECT first AS First_Name, last AS Last_Name FROM people";
$dbResult = mysql_query($query);

$fieldCount = mysql_num_fields($dbResult);
for ($i=0; $i<$fieldCount; $i++) {          
    // Set some values
    $fieldName = mysql_field_name($dbResult, $i);
}
Run Code Online (Sandbox Code Playgroud)

此示例返回字段名称,但在此示例中,它返回别名"First_Name"而不是实际字段名称"first".

是否可以从这样的查询中获取实际的字段名称.特别是如果我正在编写一个函数,并且不知道将抛出什么查询.

bob*_*olt 11

如果您使用的是MySQLi:

http://www.php.net/manual/en/mysqli-result.fetch-field.php

字段对象具有"orgname"属性.

"经典"MySQL等效函数不报告原始列名.


Pet*_*ley 10

简短的回答:你没有.

答案很长:一旦数据集被MySQL提取并发送回PHP,PHP现在拥有的唯一信息就是列或别名(如果您使用它们).无法查看结果集并确定原始列名称是什么.您必须切换到另一个像mysqli这样的数据库驱动程序来获取此信息.