SQL String = und LIKE bei MSSQL

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.
Klaus Herzberg [ Mi, 20 Juni 2007 16:59 ] [ ID #1744136 ]

Re: SQL String = und LIKE bei MSSQL

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.
Joe Scylla [ Mi, 20 Juni 2007 17:36 ] [ ID #1744137 ]

Re: SQL String = und LIKE bei MSSQL

Klaus Herzberg <klausherzberg [at] gmail.com> 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.
<glaskugel>
Falsche DB
falsches Schema.
</glaskugel>

> 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
Andreas Froede [ Mi, 20 Juni 2007 17:35 ] [ ID #1744138 ]

Re: SQL String = und LIKE bei MSSQL

Klaus Herzberg schrieb:

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

<news:de.comp.datenbanken.misc> 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
Claus Reibenstein [ Mi, 20 Juni 2007 17:52 ] [ ID #1744139 ]

Re: SQL String = und LIKE bei MSSQL

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
bruening [ Mi, 20 Juni 2007 22:39 ] [ ID #1744140 ]

Re: SQL String = und LIKE bei MSSQL

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
Claus Reibenstein [ Mi, 20 Juni 2007 23:23 ] [ ID #1744141 ]

Re: SQL String = und LIKE bei MSSQL

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
Richard Baier [ Do, 21 Juni 2007 00:42 ] [ ID #1744142 ]

Re: SQL String = und LIKE bei MSSQL

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
Richard Baier [ Do, 21 Juni 2007 00:50 ] [ ID #1744143 ]

Re: SQL String = und LIKE bei MSSQL

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.
Klaus Herzberg [ Do, 21 Juni 2007 09:34 ] [ ID #1745112 ]

Re: SQL String = und LIKE bei MSSQL

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.
Klaus Herzberg [ Do, 21 Juni 2007 10:11 ] [ ID #1745113 ]

Re: SQL String = und LIKE bei MSSQL

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
Richard Baier [ Do, 21 Juni 2007 17:46 ] [ ID #1745116 ]

Re: SQL String = und LIKE bei MSSQL

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


--
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]
oliver.graetz [ So, 24 Juni 2007 14:43 ] [ ID #1747421 ]
PHP » de.comp.lang.php.datenbanken » SQL String = und LIKE bei MSSQL

Vorheriges Thema: Auslesen von db eintrag in textarea feld
Nächstes Thema: pconnect