【发布时间】: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。
-
您可以使用MySQLi 或PDO,但无论您做什么绝对不能使用the old mysql extension,因为它已在很久以前被弃用和删除。在我看来,PDO 是一个更优雅的接口,但 MySQLi 可以为您提供 MySQL API 原生的完整供应商特定的功能集,因为 PDO 是一个与供应商无关的接口。对于刚刚学习 PHP 的初学者,我建议现在坚持使用 PDO,因为您可能不需要 MySQLi 必须提供的任何高级功能。
-
谢谢,我会先改变我连接到数据库的方法,然后当它工作时,我会进行第二部分。