![]() |
Dummer SQL Fehler!?
Hallo,
ich habe ein Problem mit folgenem SQL Code.
SQL-Code:
Kann mir jemand sagen warum das nicht klappt?
SELECT * FROM `user` WHERE `User` = 'Benutzer' AND `Passwort` = password('passw')
Es kommt kein Fehler, aber auch kein Ergebnis obwohl es ein Ergebnis geben müsste! Gruß Thomas |
Re: Dummer SQL Fehler!?
Hallo Thomas,
reduziere doch mal deine Einschränkungen und schau welche deiner Ausdrücke nicht wahr wird. Irgendwo ist das was du dir denkst und das was das System macht unterschiedlich. Meist sitzt der Fehler aber vor dem Gerät. Also wie so oft: Fehlersuche! MfG Thorsten |
Re: Dummer SQL Fehler!?
Da du nicht angegeben hat, welche Datenbank du verwendest ist es schwer dir zu helfen aber versuch mal die Quotes um den Tabelle- und Feldname wegzulassen:
SQL-Code:
SELECT * FROM user WHERE User = 'Benutzer' AND Passwort = password('passw')
|
Re: Dummer SQL Fehler!?
Na, ja, wie seht ihr das:
SQL-Code:
war noch nie wahr, denn diese beiden Strings sind nunmal nur semantisch äquivalent, aber vom ersten bis zum letzten Buchstaben unterschiedlich. :zwinker: .
'User' = 'Benutzer'
In SQL werden Felder und Tabellen, mit '[]' eingefasst, wenn man Konflikte mit reservierten Wörten vermeiden will. Es sollte also so laufen:
SQL-Code:
Grundsätzlich würde ich Feldnamen mit einem Prefix versehen, der für alle Tabellen unterschiedlich ist. Foreign Keys erhalten den Prefix der Fremdtabelle, damit sind 'Natural Joins' möglich, die vielleicht doch irgendwann im SQL Standard implementiert sind.
Select * from [user] where [user]='Benutzer' and [Password]=Password('passw')
Mit Prefixen wäre die Abfrage eindeutig:
SQL-Code:
Das Beste zum Schluss: Stimmt es, das die Hashfunktion im Server installiert ist? Dann muss ich ja nur einen SQL-Monitor auf den Server setzen und schon hab ich alle Passwörter! Implementiere die Hashfunktion lieber in einer Mittelschicht, sodaß ein potentieller Angreifer nur sowas sieht;
Select * from User Where usUser='Benutzer' and usPassword = Passw('passw')
SQL-Code:
Damit kann er dann nicht allzuviel anfangen.
Select * from User Where usUser='Benutzer' and usPassword = 'F234SDFGs789HJKHJ'
|
Re: Dummer SQL Fehler!?
Zitat:
Zitat:
Zur eigentlichen Frage: Steht im Feld User tatsächlich 'Benutzer' oder steht dort z.B. 'Benutzer '? Das wären dann in der Tat verschiedene Strings (analog auch das Feld Passwort überprüfen). Hast Du auf korrekte Groß/Kleinschreibung geachtet? Und probiere es doch mal mit User LIKE 'Benutzer%'. |
Re: Dummer SQL Fehler!?
Zitat:
Ich denke mal das die Lösung auch schon gepostet wurde. |
DP-Maintenance
Dieses Thema wurde von "r_kerber" von "Programmieren allgemein" nach "Datenbanken" verschoben.
SQL-Themen gehören in den Bereich Datenbanken. @MaBuSe: Die falsche Sparte hatte ich doch glatt übersehen. |
Re: Dummer SQL Fehler!?
Zitat:
Außer vllt. "Schreibe es nochmal richtig unter "Datenbanken" und ich antworte dir auch", o.ä. |
Re: Dummer SQL Fehler!?
Zitat:
In SQL werden die Feldnamen nicht mit irgendwas eingefasst! In einigen "herstellerspezifisch" angepassten SQL Dialekten schon. Aus diesem Grund muss man ja auch bei der Datenbank Sparte seine verwendete Datenbank angeben. In Oracle z.B. kannst Du nicht mit [Feldname] arbeiten. Das gibt nur einen Syntaxfehler. [edit]Der Vollständigkeit halber: In Oracle kann man zur Not "Feldname" verwenden[/edit] Besser ist es keine Schlüsselwörter zu verwenden und die Feldnamen nicht einzufassen. Dies kann unter anderem wie Du schon sagtest mit einem Pre- oder Postfix erreicht werden. Zitat:
(Das musste ich auch nicht, da die "Anderen" ja schon die "richtige" Antwort gaben.) |
Re: Dummer SQL Fehler!?
Ich nutze die MySQL 4.1 Datenbank.
Alle Tipps habe ich versucht, die haben aber nichts gebracht... Edit: Achso eins noch zum Thema Einschränken und suchen wo der Fehler liegt.... Dieser sitzt glaube ich bei der password() Funktion... Aber sehe nicht wo der Fehler ist... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz