SQL String = und LIKE bei MSSQL

SQL String = und LIKE bei MSSQL

am 20.06.2007 16:59:22 von Klaus Herzberg

Hallo,
es ist etwas OT, weil es eigentlich ein reines SQL-Problem zu sein
scheint, aber mssql-NGs....

Eine Anwendung (PHP und MSSQL) laeuft bei mir ohne Problem. Ich nutze
den aktuellen SQLEXPRESS. Beim Kunden laeuft MSSQL-Server 2000. Ich kann
nicht direkt auf dem Server des Kunden arbeiten, weil Intranet...

Folgende Fehlermeldung:

Invalid SQL:
SELECT password FROM tbl_user WHERE login='username'

Andere Seiten mit Inhalten aus der DB werden ohne Fehler angezeigt, d.h.
grundsaetzlich scheint es zu laufen.

Ich wuerde jetzt versuchen das = durch ein LIKE zu ersetzen. Kann dies
am SQL-Server 2000 liegen?

Vielen Dank.
mfg. klaus.

Re: SQL String = und LIKE bei MSSQL

am 20.06.2007 17:35:40 von Andreas Froede

Klaus Herzberg wrote:
> es ist etwas OT, weil es eigentlich ein reines SQL-Problem zu sein

Es ist kein SQL-Problem. Das SQL ist okay. Es ist eigentlich auch kein
MSSQL-Problem, denn SO kaputt is er auch nicht.
Ich würde mal sagen, irgendwo zwischen abschicken und SQL-Server geht
was schief.

> Folgende Fehlermeldung:

Wer generiert die? Die ist ja selbst für Fensterverhältnis
nichtssagend. Wenn Du nicht direkt an die SQl-Konsole kommst, dann laß
es jemanden bei Kunden machen (Am besten, jemand der weiß, das
er/sie/es keine Ahnung hat. Die tippen dann, wirklich das was Du sagts
und lesen alles vor). Alternativ nimm das Log vom Server bzw laß es
Dir vom Admin geben.

> Invalid SQL:
> SELECT password FROM tbl_user WHERE login='username'

Ist valid.

Falsche DB
falsches Schema.


> Ich wuerde jetzt versuchen das = durch ein LIKE zu ersetzen. Kann dies
> am SQL-Server 2000 liegen?

SO kaputt is er auch nicht.

CIAO
andreas
--
.... oben geht es um den Thron - unten geht es um Deinen Hintern ...
[Keimzeit]
Klettern in Thüringen: http://www.climb.spider-net.de
Kletterhalle in Jena: http://www.wand.spider-net.de

Re: SQL String = und LIKE bei MSSQL

am 20.06.2007 17:36:16 von Joe Scylla

Klaus Herzberg wrote:
> Hallo,
> es ist etwas OT, weil es eigentlich ein reines SQL-Problem zu sein
> scheint, aber mssql-NGs....
>
> Eine Anwendung (PHP und MSSQL) laeuft bei mir ohne Problem. Ich nutze
> den aktuellen SQLEXPRESS. Beim Kunden laeuft MSSQL-Server 2000. Ich kann
> nicht direkt auf dem Server des Kunden arbeiten, weil Intranet...
>
> Folgende Fehlermeldung:
>
> Invalid SQL:
> SELECT password FROM tbl_user WHERE login='username'
>
> Andere Seiten mit Inhalten aus der DB werden ohne Fehler angezeigt, d.h.
> grundsaetzlich scheint es zu laufen.
>
> Ich wuerde jetzt versuchen das = durch ein LIKE zu ersetzen. Kann dies
> am SQL-Server 2000 liegen?
>
> Vielen Dank.
> mfg. klaus.

Das SQL-Statement ist korrekt. Leider ist die Fehlermeldung nicht
aussagekräftig (ich vermute, dass dies an der MSSQL extension von PHP
liegt).

Eine wirkliche Fehlermeldung bekommt man aber einfach mit dem Profiler
des MSSQL-Server raus:

- Profiler starten und neue Überwachung anlegen und einen Filter auf
die Datenbank legen auf welche man via PHP zugreift.

- Die Webseite aufrufen welche die Fehlermeldung verursacht.

- Im Profiler schauen was für ein Fehler ausgegeben wird.

Re: SQL String = und LIKE bei MSSQL

am 20.06.2007 17:52:41 von Claus Reibenstein

Klaus Herzberg schrieb:

> es ist etwas OT, weil es eigentlich ein reines SQL-Problem zu sein
> scheint, aber mssql-NGs....

existiert.

> Invalid SQL:
> SELECT password FROM tbl_user WHERE login='username'

Sieht eigentlich richtig aus.

> Andere Seiten mit Inhalten aus der DB werden ohne Fehler angezeigt, d.h.
> grundsaetzlich scheint es zu laufen.

Und wie sieht es mit anderen Inhalten aus tbl_user aus? Was sagt SELECT
* FROM tbl_user?

> Ich wuerde jetzt versuchen das = durch ein LIKE zu ersetzen.

Wozu?

Gruß. Claus

Re: SQL String = und LIKE bei MSSQL

am 20.06.2007 22:39:27 von bruening

Claus Reibenstein schrieb:
> Klaus Herzberg schrieb:
>> Invalid SQL:
>> SELECT password FROM tbl_user WHERE login='username'
>
> Sieht eigentlich richtig aus.

An sich ja, aber es gibt doch eine SQL Funktion namens "PASSWORD" oder?
Kann das damit zusammenhängen? Bin eigentlich nicht so der SQL Crack,
bitte einfach streichen wenn es Unsinn ist :)


Gruß,
Habbo

Re: SQL String = und LIKE bei MSSQL

am 20.06.2007 23:23:09 von Claus Reibenstein

Jan Habbo Brüning schrieb:

> Claus Reibenstein schrieb:
>
>> Klaus Herzberg schrieb:
>>
>>> SELECT password FROM tbl_user WHERE login='username'
>>
>> Sieht eigentlich richtig aus.
>
> An sich ja, aber es gibt doch eine SQL Funktion namens "PASSWORD" oder?

Schon. Aber PASSWORD steht nicht bei den reservierten Schlüsselwörtern.
So lange da keine öffnende Klammer folgt, sollte das also unkritisch sein.

Aber einen Versuch wäre es vielleicht wert:

SELECT `password` FROM tbl_user WHERE login='username'

Gruß. Claus

Re: SQL String = und LIKE bei MSSQL

am 21.06.2007 00:42:56 von Richard Baier

Claus Reibenstein wrote:

>>>> SELECT password FROM tbl_user WHERE login='username'
>>> Sieht eigentlich richtig aus.
>> An sich ja, aber es gibt doch eine SQL Funktion namens "PASSWORD" oder?
>
> Schon. Aber PASSWORD steht nicht bei den reservierten Schlüsselwörtern.
> So lange da keine öffnende Klammer folgt, sollte das also unkritisch sein.

Korrekt, PASSWORD ist beim SQL Server kein reserviertes Schlüsselwort.

> Aber einen Versuch wäre es vielleicht wert:
>
> SELECT `password` FROM tbl_user WHERE login='username'

Das Statement wäre beim SQL Server als SELECT [password] ... zu
formulieren, hat aber in diesem Fall keine Auswirkung.

Gruß Richard

Re: SQL String = und LIKE bei MSSQL

am 21.06.2007 00:50:43 von Richard Baier

Klaus Herzberg wrote:

> es ist etwas OT, weil es eigentlich ein reines SQL-Problem zu sein
> scheint, aber mssql-NGs....

In microsoft.public.de.sqlserver wird gerne und gut geholfen, da sehe
ich kein Problem.

> Eine Anwendung (PHP und MSSQL) laeuft bei mir ohne Problem. Ich nutze
> den aktuellen SQLEXPRESS. Beim Kunden laeuft MSSQL-Server 2000. Ich kann
> nicht direkt auf dem Server des Kunden arbeiten, weil Intranet...
>
> Folgende Fehlermeldung:
>
> Invalid SQL:
> SELECT password FROM tbl_user WHERE login='username'

Das ist keine Fehlermeldung vom SQL Server, also nur bedingt aussagekräftig.

> Andere Seiten mit Inhalten aus der DB werden ohne Fehler angezeigt, d.h.
> grundsaetzlich scheint es zu laufen.
>
> Ich wuerde jetzt versuchen das = durch ein LIKE zu ersetzen. Kann dies
> am SQL-Server 2000 liegen?

Nur so eine Idee: Kann der Username einfache Anführungszeichen (')
enthalten? Die wären dann nämlich geeignet zu maskieren, ebenfalls durch
ein einfaches Anführungszeichen.

.... WHERE login = 'D''Angelo'

Gruß Richard

Re: SQL String = und LIKE bei MSSQL

am 21.06.2007 09:34:54 von Klaus Herzberg

Hallo,
erstmal vielen Dank fuer die Hinweise.

Ich habe an die Admins jetzt das SQL-Statement

SELECT password FROM tbl_user WHERE login LIKE 'username'

geschickt. Die sollen das in der Konsole des SQL-Servers direkt testen
und mir dann den Fehler schicken.

Achso:
Wieso meldet PHP eigentlich, dass es sich um einen "MySQL"- und nicht
"MSSQL"-Fehler handelt?


Warning: mssql_query() [function.mssql-query]: Query failed in
X:\htdocs\...\global_functions.inc.php on line 703

Database error: Invalid SQL:
SELECT password FROM tbl_user WHERE login DASISFALSCH 'username'
MySQL Error: 0 ()
-----------------
Session halted.

(Ich habe das DASISFALSCH nur gemacht, damit ich eine Fehlermeldung erhalte)


Danke. mfg. klaus.

Re: SQL String = und LIKE bei MSSQL

am 21.06.2007 10:11:46 von Klaus Herzberg

Hallo,
es liegt scheinbar wirklich am = und der Nichtverwendung von LIKE.

SELECT level FROM tbl_user WHERE login='username'

klappt auch nicht. Naja, dann schreibe ich alle String-Vergleich um.

Nochmal der Hinweis: mit aktuellem SQLEXPRESS klappt es. Der Kunde
verwendet SQL-Server 2000.

mfg. klaus.

Re: SQL String = und LIKE bei MSSQL

am 21.06.2007 17:46:05 von Richard Baier

Klaus Herzberg wrote:

> es liegt scheinbar wirklich am = und der Nichtverwendung von LIKE.
>
> SELECT level FROM tbl_user WHERE login='username'
>
> klappt auch nicht. Naja, dann schreibe ich alle String-Vergleich um.
>
> Nochmal der Hinweis: mit aktuellem SQLEXPRESS klappt es. Der Kunde
> verwendet SQL-Server 2000.

Welchen Datentyp hat die Spalte login? Bei text oder ntext ist es klar,
dass der Vergleich nur mit LIKE funktioniert, davon gehe ich aber mal
nicht aus.

Gruß Richard

Re: SQL String = und LIKE bei MSSQL

am 24.06.2007 14:43:53 von oliver.graetz

Klaus Herzberg schrieb:
> MySQL Error: 0 ()

An der Stelle habe ich eher das Gefühl, dass irgendwas nicht stimmt, bi=
g
time. Kann es sein, dass du da wie auch immer mit einer anderen
DB-Verbindung zu tun hast oder dass der Code irgendwo einen falschen
Befehl nutzt? Leider hast du zu wenig Code gepostet, um das komplett
nachzuvollziehen.

OLLi


--=20
Hoshi: "Shouldn't we try to help them?"
T'Pol: "They don't want our help."
Hoshi: "How do you know?"
T'Pol: "They're Klingons."
[Enterprise]