我正在尝试在表格中打印列名。我正在构建一个程序,其中我想通过单击表的任何列名称按升序和降序排列数据。我遇到了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帮我纠正代码。
答案 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>";
}