我想查询一个表的列名,放入一个数组,然后将该数据用于表中的html, 好吧就是那样
<?php
$ser='localhost';
$usr='root';
$pas='password';
$bsd='basedata';
$tab='contact';
try
{
$dbh = new PDO('mysql:host='.$ser.';dbname='.$bsd.'', $usr, $pas);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = $dbh->prepare("SHOW FIELDS FROM $tab ");
$query->execute();
echo "<tr>";
$i=0;
while ($dat = $query->fetch()) {
$nombre_columna[$i]=$dat[0];
echo "<th>".$nombre_columna[$i]."</th>";
$i++;
}
echo "</tr>\n";
$dbh = new PDO('mysql:host='.$ser.';dbname='.$bsd.'', $usr, $pas);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = $dbh->prepare("SELECT * FROM $tab");
$query->execute();
$j=$i;
$i=0;
while ($dat = $query->fetch()) {
echo "<tr>";
while ($i<$j) {
echo "<td>".$dat[$nombre_columna[$i]]."</td>";
$i++;
}
echo "</tr>\n";
}
$dbh=null;
?>
因此,当我运行代码时,它会显示在查询的第一行但不再显示
答案 0 :(得分:0)
我认为你误解了输出。 循环遍历表中的每一行,但问题是while ($i<$j)
循环只会在第一次运行时因为你继续增加$i
的值,所以在第一次迭代后它永远不会小于$j
。您需要在每次迭代时重置$i
的值,而不是在循环之前重置它。
while ($dat = $query->fetch()) {
$i=0; // <-- This will fix it
echo "<tr>";
while ($i<$j) {
echo "<td>".$dat[$nombre_columna[$i]]."</td>";
$i++;
}
echo "</tr>\n";
}
如果您查看源代码,我猜您会看到其中的一堆:
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>