【问题标题】:Gather column name of a table from database [closed]从数据库中收集表的列名[关闭]
【发布时间】:2015-10-20 22:03:18
【问题描述】:

获取数据库表的列名并在 php 页面中显示它们的最佳方法是什么?我只能收集和显示表格行。

$connection = mysql_connect('localhost', 'root', '');
mysql_select_db('...');
$query = "SELECT * FROM ...";

$result = mysql_query($query);

echo "<table class='table'>";
echo '<tr>';
for ($i = 0; $i < mysql_num_fields($result); $i++) { 
    echo "<th>".mysql_field_name($result, $i)."</th>"; 
}
echo '</tr>';
while($row = mysql_fetch_array($result)){  
echo "<tr class='info'><td>" . $row['name'] . "</td>
               <td>" . $row['mail'] . "</td>
               <td>" . $row['number'] . "</td>
               <td>" . $row['price'] . "</td>
               <td>" . $row['paymenttype'] . "</td>
               <td>" . $row['pcname'] . "</td>
               </tr>";  
}
echo "</table>"; 
mysql_close(); 
?> 

【问题讨论】:

  • 我在这里看到了两个主要问题。 1) 您使用的扩展已经从 PHP 中删除了一段时间。这尤其危险,因为您说您只是在学习 PHP。请参阅the PHP manual 了解有关使用较新 API 的更多详细信息。 2) 列名是$row 数组的键。所以$row['foo'] 是该结果行中foo 列的值。您的数据库架构是静态的,因此您应该始终知道您的列名是什么。
  • 所以我必须首先使用 Msqli。
  • 您可以使用MySQLiPDO,但无论您做什么绝对不能使用the old mysql extension,因为它已在很久以前被弃用和删除。在我看来,PDO 是一个更优雅的接口,但 MySQLi 可以为您提供 MySQL API 原生的完整供应商特定的功能集,因为 PDO 是一个与供应商无关的接口。对于刚刚学习 PHP 的初学者,我建议现在坚持使用 PDO,因为您可能不需要 MySQLi 必须提供的任何高级功能。
  • 谢谢,我会先改变我连接到数据库的方法,然后当它工作时,我会进行第二部分。

标签: php mysql database


【解决方案1】:

http://php.net/manual/en/function.mysql-num-fields.php

$result = mysql_query("select * from table"); 

echo '<tr>';
for ($i = 0; $i < mysql_num_fields($result); $i++) { 
    echo "<th>".mysql_field_name($result, $i)."</th>"; 
}
echo '</tr>'; 

【讨论】:

  • 这个工作谢谢你
【解决方案2】:

单独查询

SHOW COLUMNS FROM {table_name}

【讨论】:

  • 更新了我的问题,类似的?
  • 请解释一下为什么会这样。
  • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • @RohitGupta 此查询将提供列名,因此您不必对它们进行硬编码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
相关资源
最近更新 更多