无法打印列名称

时间:2017-12-19 18:27:02

标签: php

我正在尝试在表格中打印列名。我正在构建一个程序,其中我想通过单击表的任何列名称按升序和降序排列数据。我遇到了IDE在以下代码部分中抛出的错误。

错误消息:"试图获取非对象"

的属性
$data=mysqli_query($con,"select * from `address` order by $id $sort");
$col=mysqli_num_fields($data);
echo "<tr>";
for($i=0;$i<$col;$i++)
{
    $field=mysqli_fetch_fields($data);
    echo "<th><a href=\"class.php?fn=$field->name &ord=$sort\">$field->name</a></th>";
}
echo "</tr>";

Plz帮我纠正代码。

2 个答案:

答案 0 :(得分:3)

首先,您的查询中存在MySQL语法错误,为了按两列排序,您需要在注释中提到逗号为@GarbageCollector,因此您的查询将变为:

$data=mysqli_query($con,"select * from `address` order by $id,$sort");

此外,您需要在for循环之外使用$field=mysqli_fetch_fields($data);,因为您没有为每个列请求它,每次迭代都是相同的,而且,mysqli_num_fields($data)你不需要$data=mysqli_query($con,"select * from `address` order by $id $sort"); $col=mysqli_num_fields($data); echo "<tr>"; $field=mysqli_fetch_fields($data); foreach ($field as $val) { echo "<th><a href=\"class.php?fn=$val->name &ord=$sort\">$val->name</a></th>"; } echo "</tr>"; 可以进行代码优化,因此您的代码变为:

{{1}}

答案 1 :(得分:0)

首先,对于此查询的$ id和$ sort是什么意思?

$data=mysqli_query($con,"select * from `address` order by $id $sort");

试试这个(我没有使用$ sort变量)

    $data=mysqli_query($con,"select * from address order by id");
    while($col=mysqli_fetch_object($data)) {
         echo "<tr>";
         echo "<th><a href='class.php?fn=$col->name'>$col->name</a></th>";
         echo "</tr>";
    }