PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WHERE NOT klausel funktioniert nicht so wie ich es will



ohcibi
22-08-2004, 14:48
hi.... code gerade ein acp und bin bei der userverwaltung anjekommen.... dabei geht es mir darum die editierung meiner daten zu verhindern indem ich dem script ganz einfach verbieten will einen link zum editieren bzw. loeschen meines accounts zu krieren..

am einfachsten dachte ich loes ich es auf diese weise


SELECT * FROM er_users WHERE NOT name='ohcibi'

jetz bin ich recht ratlos anfangs schob ich es auf einen schreibfehler, jedoch gibt das skript wenn ich das NOT rausnehme exakt meine account daten wieder, mit dem NOT jedoch gibt es gar nichts wieder - koennte ja am phpskript liegen dachte ich mir, also im phpmyadmin getestet, selbst der bleibt stumm.... was is daran jetz also falsch??

shb
22-08-2004, 20:26
versuchs mal mit

SELECT * FROM er_users WHERE name not like 'ohcibi'

cu SHB

ohcibi
23-08-2004, 12:35
werde ich ma versuchen (und dann edit obs hinhaut), trotzdem will ich die frage im raum stehen lassen warum es mit meiner abfrage nich funktioniert - genauso, nur nicht mit ohcibi sondern mit ner variable glaube, funktioniert es naemlich inem anderen script...




habs ma im phpmyadmin probiert klappt mit

SELECT * FROM er_users WHERE name NOT LIKE 'ohcibi'

was also is an meiner abfrage falsch?

Hans-Georg Normann
23-08-2004, 18:59
was also is an meiner abfrage falsch?NOT ist ein Operator wie =, <>, LIKE etc auch. Deshalb frage ich mich ob WHERE NOT name='irgendetwas' syntaktisch richtig ist. Du hättest hier zwei Operatoren durch einen Feldnamen getrennt.

Habe mal einige Bücher gewälzt. Aber so richtig schlau geworden bin ich dadurch auch nicht geworden. Da ich aber immer schon aus dem Bauch heraus feldname NOT LIKE xxx verwendet habe, habe ich da aber auch noch nie Schwierigkeiten gehabt.

Hans

ohcibi
23-08-2004, 19:06
es sind doch aber keine operatoren gleichen typs... und wie gesagt ich kann mich daran erinnern das schonma so verwendet zu haben..... einen sql error gabs auch nich...

elrond
24-08-2004, 07:09
was ist denn gegen das naheliegende "...name<>'elrond' " einzuwenden ?

ohcibi
24-08-2004, 07:14
was ist denn gegen das naheliegende "...name<>'elrond' " einzuwenden ?

theoretisch nix..... aber groeßer kleiner beschreibt ja prinzipiell ein mathematisches problem, das ist es aber nich also wuerde es fuer mich unsauber aussehen und mir nich jefallen...

elrond
24-08-2004, 07:26
theoretisch nix..... aber groeßer kleiner beschreibt ja prinzipiell ein mathematisches problem, das ist es aber nich also wuerde es fuer mich unsauber aussehen und mir nich jefallen...

naja... "<>" beschreibt kein mathematisches problem sondern ist ein logischer operator, der von den SQL-Machern zum Test auf "ungleich" eingeführt worden ist.
2 <> 3 ist ein ebensoguter logischer Ausdruck wie 'Apfel'<>'Birne' . Ich denke nicht daß es lohnt darüber weiter nachzudenken.

Was bei deinem Vergleich aber sinnvoll sein könnte, ist die zu vergleichenden Strings vor dem Vergleich aufzubereiten; dh. Lerrzeichen entferen und über Groß-/Kleinschreibung nachdenken.

wenns dann immernoch unschön ist, dann ist es möglich logische ausdrücke zu klammern:

"... where not (name='elrond')"

ohcibi
24-08-2004, 07:36
Was bei deinem Vergleich aber sinnvoll sein könnte, ist die zu vergleichenden Strings vor dem Vergleich aufzubereiten; dh. Lerrzeichen entferen und über Groß-/Kleinschreibung nachdenken.


wie kommst du darauf, dass das bei meinem vergleich sinnvoll waere?? es wird so gebraucht wie es da steht, geht nur darum, dass mein account in diesem acp nich editiert werden kann, also ich kann den nutzen dieses ratschlags eindeutig erkennen, tatsaechlich hab ich mir darueber noch keine gedanken gemacht - aber dein zusatz was bei deinem vergleich..... iritierte mich, da es ja hier rein darum geht alle datensaetze außer name = ohcibi rauszuholen...

elrond
24-08-2004, 07:42
schon gut.... :rolleyes:

Du hast ja Recht! Für den Negativ-Vergleich ist es nicht wirklich notwendig die Werte aufzubereiten. Ich wollte einfach nur mal den Klugsch.. raushängen lassen :o .

Aber die Sache mit den Klammern findet doch deine Zustimmung ?

ohcibi
24-08-2004, 07:55
Ich wollte einfach nur mal den Klugsch.. raushängen lassen :o .
dann handelst du ja aehnlich wie ich 8-))...



Aber die Sache mit den Klammern findet doch deine Zustimmung ?
wenn es funktioniert sicher, aber testen konnt ich das noch nich 8-)

elrond
24-08-2004, 07:57
Funxt, ich hab's unter postgreSQL und mysql getestet...