2017-12-19 16 views
-1

テーブルに列名を印刷しようとしています。テーブルの列名のいずれかをクリックして昇順と降順でデータを並べ替えるプログラムを作成しています。私はコードの次の部分で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

は、私はあなたのクエリ – GarbageCollector

+0

で$ IDの後にカンマが必要だと思います@ GarbageCollectorが動作しない、私はselect文に問題があるとは思わない。 –

+0

@Tonyは "警告:mysqli_num_fields()はパラメータ1がmysqli_result、boolean given"とエラーメッセージをスローします。 –

答えて

3

まず、あなたがあなたのクエリでのMySQLの構文エラーを持っている(私は$ソート変数を使用しなかった)これを試して、2列注文するために、あなたが持っている必要がありますあなたはすべてのCOLのためにそれを要求しないので、

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

はまた、あなたのforループの$field=mysqli_fetch_fields($data);外を持っている必要があります:あなたのクエリになるので@GarbageCollectorは、コメントで述べたように、間にコンマUMN、それはすべての反復で同じである、また、あなたは、コードの最適化を持つことができます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>"; 
+0

ありがとう、コードは動作しますが、クエリは$ idと$ sortの間にカンマがありません。 –

+0

私は評判の点で不足しているあなたにアップアップすることができませんが、私はあなたの答えをマークしています。 –

+0

それは大丈夫@ Don'tDownvoteMeです。ちなみに、[MySQL Sorting Doucmentation](https://dev.mysql.com/doc/refman/5.7/en/sorting-rows.html)にチェックを入れると、複数の列を使った並べ替えの正しい構文コンマで区切ります。しかし、おそらくMySQLオプティマイザは、見逃しても同じと仮定します。 – andrewnagyeb

0

まず、このクエリで$ idと$ sortを使用するとどういう意味ですか?

$data=mysqli_query($con,"select * from `address` order by $id $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>"; 
    } 
+0

Plzは質問を正しく読んでいます。私が与えたことは、問題のあるコードスニペットだけです。プログラムにはさらに多くのものがあります。 –

関連する問題