2017-12-19 1 views
-1

Ich versuche, Spaltennamen in meiner Tabelle zu drucken. Ich baue ein Programm, in dem ich die Daten in aufsteigender Reihenfolge und in absteigender Reihenfolge anordnen möchte, indem ich auf einen der Spaltennamen der Tabelle klicke. Ich stoße auf einen Fehler, der von der IDE im folgenden Abschnitt des Codes ausgelöst wird.Drucken von Spaltennamen nicht möglich

Fehlermeldung: "Der Versuch, Eigentum von Nicht-Objekt zu erhalten"

$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 helfen mir den Code zu korrigieren.

+2

Ich glaube, Sie müssen ein Komma nach $ id in Ihrer Abfrage – GarbageCollector

+0

@ GarbageCollector Funktioniert nicht, ich denke nicht, dass die Select-Anweisung ein Problem hat. –

+0

@Tony wirft eine Fehlermeldung, "Warnung: mysqli_num_fields() erwartet, dass Parameter 1 mysqli_result ist, boolean gegeben". –

Antwort

3

Zum einen (ich nicht die $ sort Variable verwendet haben), können Sie eine MySQL-Syntaxfehler in der Abfrage haben, um durch zwei Spalten bestellen Sie haben müssen ein Komma dazwischen als @GarbageCollector in einem Kommentar erwähnt, so dass Ihre Abfrage wird:

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

auch Sie $field=mysqli_fetch_fields($data); außerhalb der for-Schleife haben müssen, da Sie es nicht für jede Spalte anfordern UMN, es ist das gleiche in jeder Iteration ist, Darüber hinaus gibt es keine Notwendigkeit für mysqli_num_fields($data) Sie eine Code-Optimierung haben können, so dass Ihr Code wird:

$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

Danke, der Code funktioniert, aber die Abfrage hat kein Komma zwischen $ id und $ sort. –

+0

Ich werde nicht in der Lage sein, Sie zu belohnen, weil ich an Reputationspunkten fehlt, aber ich habe Ihre Antwort markiert. –

+0

Es ist okay @ Don'tDownvoteMe. Übrigens, wenn wir [MySQL Sorting Doucmentation] (https://dev.mysql.com/doc/refman/5.7/en/sorting-rows.html) überprüfen, würden wir feststellen, dass die richtige Syntax zum Sortieren mit mehreren Spalten verwendet wird trennt sie durch ein Komma. Möglicherweise geht der MySQL-Optimierer jedoch davon aus, wenn er verpasst wird. – andrewnagyeb

0

Erstens, was meinst du mit $ ID und $ sort für diese Abfrage?

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

versuchen diese

$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 las die Frage richtig. Was ich angegeben habe, ist nur das Code-Snippet mit dem Problem. Es gibt viel mehr zum Programm. –

Verwandte Themen