BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- PHP if abfrage über sql (http://www.black-board.net/thread.php?threadid=22416)


Geschrieben von AC!D am 17.08.2006 um 21:04:

  if abfrage über sql

also, ich wollte fragen ob es möglich ist, das ich eine tabelle hab in der sind zwei spalten, einmal vorname und einmal nachname

dann hab ich eine php seite mit den variablen $vorname und $nachname.

jetzt will ich eine abfrage machen die wie folgt lautet:

wenn $vorname und $nachname gleich SQL-Tabelle,Vorname,Nachname ist
dann mach blablabal

else
was anderes halt...



ist das möglich? wenn ja, wie?

hoffe ihr könnt mir helfen

gruß



Geschrieben von low.society am 17.08.2006 um 21:17:

 

wenn ich das richtig verstanden hab, brauchste da nix mit bedingungen anfangen...

mach einfach ein

code:
1:
2:
3:
select * from person where vorname=$vorname and nachname=$nachname

wenn das ganze nicht case-sensitive sein soll, dann packst du das einfach alles in upper() .. (also upper(vorname)=upper($nachname) usw..)


EDIT: ich merk grad mein beitrag war noch nicht zuende großes Grinsen

dann prüfst du einfach ob die größe des resultsets, was du von der abfrage zurückbekommst, größer 0 ist und weißt somit, dass es definitiv jemanden in deiner tabelle mit dem vor- und. nachnamen gibt ..

(ich hoffe es is das, was du wolltest Zunge raus )



Geschrieben von AC!D am 17.08.2006 um 21:20:

 

hm, vielleicht schlecht erklärt, ich möchte die variable $vorname und die variable $nachname mit den inhalten in den spalten einer tabelle vergleichen

und wenn ein eintrag in der tabelle übereinstimmt mit den inhalten der variablen dann passiert eben das, und ansonsten das....



Geschrieben von LX am 17.08.2006 um 22:36:

Achtung

Ist doch im Prinzip genau das, was low.society schrieb.

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
// ... DB-Verbindungskram

$res mysql_query 'SELECT * FROM tabelle
                      WHERE lower(vorname)=lower("' $vorname '") 
                      AND lower(nachname)=lower("' $nachname '")' );

if ( mysql_num_rows $res ) > )
    // Übereinstimmung
else
    // keine Übereinstimmung



Geschrieben von AC!D am 18.08.2006 um 14:17:

 

ok, was heißt das lower genau? schreibe nur wenn übereinstimmt?



Geschrieben von LX am 18.08.2006 um 14:24:

 

Nein, lower() ist eine SQL-Funktion, die einen String in Kleinbuchstaben umwandelt. Die musst du hier nicht verwenden, aber MySQL vergleicht case-sensitive. Wenn in der Datenbank also "Hans Schmidt" steht, der Herr aber aus Faulheit nur "hans schmidt" tippt, würde er ohne lower() nicht gefunden werden.



Geschrieben von low.society am 19.08.2006 um 19:18:

 

Es ist auch sinnvoll, die Größe des Resultsets zu begrenzen, da bei Tabellen mit tausenden oder noch mehr Datensätzen auch entsprechend viele Daten gefetcht, also übertragen werden. Das wirkt sich einerseits negativ auf die Performance der Datenbank aus und andererseits dauert die Abfrage länger.

Bei MySQL beschränkt man das glaub ich einfach mit "LIMIT 1" am Ende des Statements.

(ich glaube zwar nicht, dass du mit so vielen Datensätzen arbeitest, aber man sollte es mal gehört bzw. gelesene haben Augenzwinkern )



Geschrieben von phlox81 am 19.08.2006 um 19:59:

 

Generell ist ein SELECT * FROM table immer böse Augenzwinkern


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH