2016-04-07 7 views
0

gibt es eine Möglichkeit für eine Person, Felder aus MYSQl auszuwählen, wenn Sie nur den Namen von 5 Feldern kennen 10 Felder, aber Sie wollen nur die anderen 5 Felder, denen Sie die Namen der Felder nicht kennen?gibt es eine Möglichkeit für eine Person, Felder auszuwählen, wenn sie nicht alle Felder, sondern nur bestimmte Felder haben möchten.

gibt es eine Möglichkeit, die eine Person sagen kann, wählen * außer "die Namen der Felder, die Sie kennen".

+0

Wir ermutigen Hacking nicht :) – ameenulla0007

+0

Warum ist das Hacking? Wenn Sie 'SELECT *' auswählen können, dann ist das, was die Frage stellt, legitim. Natürlich ist die Antwort nein, aber es ist immer noch eine legitime Frage. – apokryfos

+0

Nein, ich habe ein System, bei dem Benutzer dynamisch Felder über eine Benutzerschnittstelle hinzufügen können, wo sie den Feldnamen angeben können, den sie mit dem Wert hinzufügen möchten. Das Problem ist, dass ich den Feldnamen, den der Benutzer hinzufügt, nicht kenne, also möchte ich nur sagen, dass ich nicht die Feldnamen auswähle, die ich kenne, sondern nur den Rest auswähle. –

Antwort

3

Try this -

SHOW FIELDS FROM `tablename` WHERE FIELD NOT IN ('f1','f2','f3'); 

diese Abfrage ausführen und die spezifischen Feldnamen holen und jedes Feld-Namen in ein Feld setzen. Dann implode das Array mit ',' innerhalb der Select-Abfrage.

$fields = implode(',',$fields_arr); 
$sql = SELECT $fields FROM `tablename`; 
+0

starte ich mit "$ fields_arr = SHOW FIELDS VON' tablename' WO FIELD NICHT IN ('f1', 'f2', 'f3'); " –

0

Ich weiß, es gibt Möglichkeiten, dies zu tun, indem zuerst alle Feldnamen zu finden, und ohne die, die Sie von etc wissen, aber wenn die Frage ist:

Kann ich SELECT *(Except F1,F2,F3...) FROM....

dann ist die Antwort nein, SQL unterstützt nicht, wonach Sie fragen. Sie müssen explizit angeben, was Sie in der Ergebnismenge wollen.

Verwandte Themen