power-box.de
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 19.04.2007, 20:01   #1
TP-Member
 
Registriert seit: Apr 2006
Ort: Oldenburg
agnes macht alles soweit korrekt

Doppelte und einfache Anführungszeichen bei SQL-Abfrage mit php


Hallo,

kann mir jemand erzählen, wieso diese sql-Abfrage nicht funktioniert?

PHP-Code:
$sql="SELECT UserId 
    FROM users 
    WHERE UserName="
.$name." AND UserPass=MD5(".$pass.") 
    LIMIT 1"

sondern:

PHP-Code:
$sql="SELECT UserId 
    FROM users 
    WHERE UserName='"
.$name"' AND UserPass=MD5('".$pass."') 
    LIMIT 1"

Ich stehe wohl total aufm Schlauch! Könnt ihr mir helfen???

Grüße

Agnes
agnes ist offline   Mit Zitat antworten


Alt 19.04.2007, 20:15   #2
TP-Moderator
 
Benutzerbild von Adromir
 
Registriert seit: Jun 2004
Ort: Hannover
Adromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine User
Weil Werte, die keine reine Zahl sind in Singlequotes gehören..
__________________
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Adromir ist offline   Mit Zitat antworten
Alt 19.04.2007, 20:23   #3
TP-Member
 
Registriert seit: Apr 2006
Ort: Oldenburg
agnes macht alles soweit korrekt
Aber dann würde doch auch funktionieren:

PHP-Code:

$sql
="SELECT UserId 
    FROM users 
    WHERE UserName='.$name.' AND UserPass=MD5('.$pass.') 
    LIMIT 1"

agnes ist offline   Mit Zitat antworten
Alt 19.04.2007, 20:43   #4
TP-Veteran
 
Benutzerbild von heatseeker
 
Registriert seit: Jun 2003
Ort: Aachen
heatseeker bringt sich richtig einheatseeker bringt sich richtig ein
Dann müssen die Punkte weg.... also:

PHP-Code:
$sql="SELECT UserId 
    FROM users 
    WHERE UserName='$name' AND UserPass=MD5('$pass') 
    LIMIT 1"

heatseeker ist offline   Mit Zitat antworten
Alt 19.04.2007, 20:58   #5
TP-Member
 
Registriert seit: Apr 2006
Ort: Oldenburg
agnes macht alles soweit korrekt
Das leuchtet ein. Aber könnte man die SELECT-Abfrage - also jetzt mit dem Verkettungsoperator -in einfache Anführungszeichen einschließen???
PHP-Code:

$sql
='SELECT UserId  
    FROM users  
    WHERE UserName='
.$name.' AND UserPass=MD5('.$pass.')  
    LIMIT 1'

Wäre das dann auch richtig???
agnes ist offline   Mit Zitat antworten
Alt 19.04.2007, 21:02   #6
TP-Moderator
 
Benutzerbild von Adromir
 
Registriert seit: Jun 2004
Ort: Hannover
Adromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine User
Der zweite Code von dir war schon in Ordnung. Die Doublequotes waren da ja wegen des Verkettungsoperator und die Singlequotes für den SQL- Syntax..
__________________
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Adromir ist offline   Mit Zitat antworten
Alt 19.04.2007, 21:47   #7
TP-Member
 
Registriert seit: Apr 2006
Ort: Oldenburg
agnes macht alles soweit korrekt
Welchen zweiten Code meinst du???
Es funktioniert tatsächlich nur:

PHP-Code:
$sql="SELECT UserId  
    FROM users  
    WHERE UserName='"
.$name"' AND UserPass=MD5('".$pass."')  
    LIMIT 1"

und:
PHP-Code:
$sql="SELECT UserId  
    FROM users  
    WHERE UserName='$name' AND UserPass=MD5('$pass')  
    LIMIT 1"

Aber ich versteh nicht, warum!!!!

Wenn die doppelten für den Verkettungsoperator sind und die einfachen für die SELECT-Syntax, müsste denn dann die SELECT-Abfrage nicht auch mit einem einfachen beginnen??
Also so mein ich:
PHP-Code:
$sql='SELECT UserId  
    FROM users  
    WHERE UserName='".$name. "' AND UserPass=MD5('".$pass."')  
    LIMIT 1'

Ich blick nicht mehr durch
agnes ist offline   Mit Zitat antworten
Alt 19.04.2007, 22:28   #8
TP-Member
 
Registriert seit: Apr 2006
Ort: Oldenburg
agnes macht alles soweit korrekt
Jetzt hab ichs verstanden:
PHP-Code:
$sql="SELECT UserId   
    FROM users   
    WHERE UserName='"
.$name"' AND UserPass=MD5('".$pass."')   
    LIMIT 1"

Die SELECT-Abfrage wird mit einem doppelten begonnen und verlangt ein einfaches bei UserName='$name' . Da nun aber der Verkettungsoperator auch noch da ist, muss erst einmal durch das doppelte die SELECT-Abfrage unterbrochen werden...also "SELECT...FROM...WHERE UserName=' " .$name. " '...

Richtig???
agnes ist offline   Mit Zitat antworten
Alt 19.04.2007, 22:39   #9
TP-Moderator
 
Benutzerbild von Adromir
 
Registriert seit: Jun 2004
Ort: Hannover
Adromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine UserAdromir lebt für das TP und seine User
So würde ich das auch sehen..
__________________
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Adromir ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Traum-Talk > Webdesign & Co.
Doppelte und einfache Anführungszeichen bei SQL-Abfrage mit php Doppelte und einfache Anführungszeichen bei SQL-Abfrage mit php
« Bild in IE 7 nicht oder nur teilweise da? | Homepage nicht W3C Compatibel »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

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 an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:36 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67