Php 如何在mysql中检索数据库列名

Php 如何在mysql中检索数据库列名,php,mysql,Php,Mysql,我有一个名为author的数据库表,当有人注册并访问他的个人资料时,我希望显示类似的结果 Name : user name here Email : email here location : location here 位置、电子邮件和名称是数据库列名。我可以重设数据库值,但不能重设数据库列名。我该怎么做 更新: 这是我的密码 $query = "SELECT * FROM author WHERE

我有一个名为author的数据库表,当有人注册并访问他的个人资料时,我希望显示类似的结果

Name : user name here
Email : email here
location : location here
位置、电子邮件和名称是数据库列名。我可以重设数据库值,但不能重设数据库列名。我该怎么做

更新: 这是我的密码

$query = "SELECT * 
                      FROM author 
                      WHERE id = {$author_id};
 $author_info = mysql_query($query, $connection);
$author_details  =  mysql_fetch_assoc($author_info);
foreach ($author_details as $fieldname) {
echo $fieldname;
}
从这段代码中,我只得到name、location、email的值,但我还需要打印name、email、location等列名及其列值。

尝试此查询

SHOW columns FROM your-table-name;
以如下url为例:

www.site.com/profile.php?id=1
$q = mysql_query("SELECT location, email, name FROM db WHERE id = " . $_GET['id']); 

while($r = mysql_fetch_array($q)){
    echo $r['location'] . $r['name'] . $r['email'];
}
您的profile.php如下所示:

www.site.com/profile.php?id=1
$q = mysql_query("SELECT location, email, name FROM db WHERE id = " . $_GET['id']); 

while($r = mysql_fetch_array($q)){
    echo $r['location'] . $r['name'] . $r['email'];
}

只是一条指导线。您对sql注入持开放态度,应该考虑使用PDO。

听起来您已经知道希望这些列名是什么,并且希望它们是样板文本,而不是从数据库的元数据中动态选择。在这种情况下,请尝试将样板文本连接到数据上,然后为生成的列提供一个列别名,以便在PHP代码中检索

例如:

SELECT CONCAT("Name: ",name) AS name, CONCAT("Location :",location) AS location,
CONCAT("Email: ",email) FROM author WHERE id = 1;
然而,这看起来确实有点不寻常,需要数据库去做-通常情况下,例如,如果编写一个基于PHP的应用程序,您会将模板文本作为HTML模板文本放在PHP页面中。

mysql\u field\u name$index

好的,假设您已经运行了查询以获取数据。这就是如何使用这些数据创建表的方法。或者根据需要使用mysql\u field\u name$index。有了这个例子,你就会明白了

$numFields = mysql_num_fields($result); 

echo "<table id='whatever you want here'>";
        echo "<tr>";
            for($i = 0; $i < $numFields; $i++)
            {
                echo "<th>";
                    echo mysql_field_name($result,$i);
                echo "</th>";
            }
        echo "</tr>";

        while($row = mysql_fetch_row($result))
        {
            echo "<tr>";
                for($i = 0; $i < $numFields; $i++)
                {
                    echo "<td>$row[$i]</td>";
                }
            echo "</tr>";
        }
echo "</table>";

在foreach中,您需要使用以下表格:

foreach ($author_details as $fieldname=>$fieldvalue) {...}
如果在foreach中没有=>,则只获得值,使用它可以获得键和值


请参阅php

给出您正在使用的代码。不能重设数据库列名是什么意思?当您执行selectname、Email、Location FROM Author时,标题称为column namesmysql\u field\u Name这就是我要找的函数。谢谢,不客气。我把它放在答案的开头,供其他人将来参考。