AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dummer SQL Fehler!?

Ein Thema von Plague · begonnen am 9. Apr 2006 · letzter Beitrag vom 10. Apr 2006
Antwort Antwort
Seite 1 von 2  1 2      
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#1

Dummer SQL Fehler!?

  Alt 9. Apr 2006, 23:30
Hallo,

ich habe ein Problem mit folgenem SQL Code.
SELECT * FROM `user` WHERE `User` = 'BenutzerAND `Passwort` = password('passw') Kann mir jemand sagen warum das nicht klappt?
Es kommt kein Fehler, aber auch kein Ergebnis obwohl es ein Ergebnis geben müsste!

Gruß
Thomas
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Dummer SQL Fehler!?

  Alt 9. Apr 2006, 23:58
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Dummer SQL Fehler!?

  Alt 10. Apr 2006, 06:44
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:

SELECT * FROM user WHERE User = 'BenutzerAND Passwort = password('passw')
Markus Kinzler
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Dummer SQL Fehler!?

  Alt 10. Apr 2006, 07:38
Na, ja, wie seht ihr das: 'User' = 'Benutzer' war noch nie wahr, denn diese beiden Strings sind nunmal nur semantisch äquivalent, aber vom ersten bis zum letzten Buchstaben unterschiedlich. .

In SQL werden Felder und Tabellen, mit '[]' eingefasst, wenn man Konflikte mit reservierten Wörten vermeiden will. Es sollte also so laufen:
Select * from [user] where [user]='Benutzerand [Password]=Password('passw') 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.

Mit Prefixen wäre die Abfrage eindeutig:
Select * from User Where usUser='Benutzerand usPassword = Passw('passw') 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='Benutzerand usPassword = 'F234SDFGs789HJKHJ' Damit kann er dann nicht allzuviel anfangen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#5

Re: Dummer SQL Fehler!?

  Alt 10. Apr 2006, 08:16
Zitat von alzaimar:
Na, ja, wie seht ihr das: 'User' = 'Benutzer' war noch nie wahr
Wenn Du in der Frage von Plague genau hinschaust, findest Du:
Zitat von Plague:
SELECT * FROM `user` WHERE `User` = 'BenutzerAND `Passwort` = password('passw')
Diese "merkwürdigen" schrägen Anführungszeichen umschließen keinen String sondern Feld- und/oder Tabellennamen. Das ist IMHO einen Eigenart von MySQL.
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%'.
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: Dummer SQL Fehler!?

  Alt 10. Apr 2006, 09:08
Zitat von Plague:
ich habe ein Problem mit folgenem SQL Code.
Dein Problem hat was mit Datenbanken zu tun, also würde es mehr Sinn machen es auch in die Datenbank Sparte zu posten. Dort müsstest Du auch angeben welche Datenbank Du verwendest, damit wäre das mit den ´xx´ auch klar gewesen.

Ich denke mal das die Lösung auch schon gepostet wurde.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
10. Apr 2006, 09:54
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.
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Dummer SQL Fehler!?

  Alt 10. Apr 2006, 10:05
Zitat von MaBuSE:
Dein Problem hat was mit Datenbanken zu tun, also würde es mehr Sinn machen es auch in die Datenbank Sparte zu posten. Dort müsstest Du auch angeben welche Datenbank Du verwendest, damit wäre das mit den ´xx´ auch klar gewesen.
Das beste Mittel gegen diese Art der ignoranten Fragestellung ist: einfach nicht antworten.
Außer vllt. "Schreibe es nochmal richtig unter "Datenbanken" und ich antworte dir auch", o.ä.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

Re: Dummer SQL Fehler!?

  Alt 10. Apr 2006, 10:25
Zitat von alzaimar:
In SQL werden Felder und Tabellen, mit '[]' eingefasst, wenn man Konflikte mit reservierten Wörten vermeiden will. Es sollte also so laufen:
Select * from [user] where [user]='Benutzerand [Password]=Password('passw')
Das ist schlichtweg falsch.
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 von Elvis:
Zitat von MaBuSE:
Dein Problem hat was mit Datenbanken zu tun, also würde es mehr Sinn machen es auch in die Datenbank Sparte zu posten. Dort müsstest Du auch angeben welche Datenbank Du verwendest, damit wäre das mit den ´xx´ auch klar gewesen.
Das beste Mittel gegen diese Art der ignoranten Fragestellung ist: einfach nicht antworten.
Außer vllt. "Schreibe es nochmal richtig unter "Datenbanken" und ich antworte dir auch", o.ä.
Ich habe keine Antwort gegeben
(Das musste ich auch nicht, da die "Anderen" ja schon die "richtige" Antwort gaben.)
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Plague

Registriert seit: 6. Okt 2003
591 Beiträge
 
#10

Re: Dummer SQL Fehler!?

  Alt 10. Apr 2006, 14:09
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...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz