我有一个名为“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;
}
从这段代码中我只得到名称,位置,电子邮件的值,但我还需要打印列名,如姓名,电子邮件,位置及其列值。
答案 0 :(得分:2)
尝试此查询,
SHOW columns FROM your-table-name;
答案 1 :(得分:0)
拿这样的网址:
www.site.com/profile.php?id=1
你的profile.php看起来像这样:
$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。
答案 2 :(得分:0)
听起来您已经知道您希望这些列名称是什么,并且您希望它们是样板文本而不是从数据库的元数据中动态选择。在这种情况下,尝试将样板文本连接到您的数据上,然后为结果列提供一个列别名(为方便检索它,例如,PHP代码)。
例如:
SELECT CONCAT("Name: ",name) AS name, CONCAT("Location :",location) AS location,
CONCAT("Email: ",email) FROM author WHERE id = 1;
然而,想要数据库这样做似乎有点不寻常 - 比如通常情况。如果编写基于PHP的应用程序,您可以将样板文本作为HTML样板文本放在PHP页面中。
答案 3 :(得分:0)
mysql_field_name($index)
好的,我们假设你已经运行了查询来获取数据。这是您可以根据需要创建包含这些数据的表的方法。或者只是根据需要使用mysql_field_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>";
答案 4 :(得分:0)
在你的foreach中你需要使用这个表格:
foreach ($author_details as $fieldname=>$fieldvalue) {...}
如果没有fore =>
中的{{1}},您只能获得值,并获得关键值和值。
请参阅php foreach documentation