| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
BB-BF-BM Gast
|
Daten in WHERE-Klausel vergleichen |
|
|
Ich schreibe gerade an einem User-System und möchte mit einem SQL-Befehl Daten aus einer Tabelle holen: | PHP-Code: | 1 2 3 4 5 6 7 8 9 10
| $sql = 'UPDATE '.SESSION_TABLE.'
SET
last_visit = \''.$this->time.'\',
user_ip = \''.$_SERVER['REMOTE_ADDR'].'\',
user_agent = \''.$_SERVER['HTTP_USER_AGENT'].'\',
referer = \''.( isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '' ).'\',
last_page = \''.$_SERVER['REQUEST_URI'].'\'
WHERE
session_id = \''.$sid.'\'';
$db->query($sql); |
Nun möchte ich aber nur die Daten holen, wenn die IP aus dem Datensatz mit der des Users übereinstimmt: | PHP-Code: | 1 2 3 4 5 6 7 8 9 10 11
| $sql = 'UPDATE '.SESSION_TABLE.'
SET
last_visit = \''.$this->time.'\',
'.( !$config->check_ip ? 'user_ip = \''.$_SERVER['REMOTE_ADDR'].'\',' : '' ).'
user_agent = \''.$_SERVER['HTTP_USER_AGENT'].'\',
referer = \''.( isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '' ).'\',
last_page = \''.$_SERVER['REQUEST_URI'].'\'
WHERE
session_id = \''.$sid.'\'
'.( $config->check_ip ? 'AND user_ip = \''.$_SERVER['REMOTE_ADDR'].'\'' : '' );
$db->query($sql); |
Gibt es auch eine Möglichkeit, nur die ersten beiden Stellen der IP zu vergleichen (xxx.xxx.***.***), OHNE dass ich vorher mit einem SELECT-Befehl mir erst die gespeicherte IP hole, und sie dann mit explode() aufteile? |
|
|
|
| 27 Jun 2006 10:46 |
|
  |
David Administrator

|
 |
|
|
| Explode ist die einzige Möglichkeit, die mir so spontan einfällt. Man könnte auch die IP auf die ersten 7 Zeichen reduzieren, was aber nicht das Wahre ist. Es müssen ja nicht immer dreistellige Zahlen sein... Vielleicht haben unsere Experten eine Idee? |
_________________ MfG David Mirzoian
axinio Internet Marketing - professionelle Suchmaschinenoptimierung |
|
|
| 27 Jun 2006 13:15 |
|
 |
V4hn Moderator
|
Re: Daten in WHERE-Klausel vergleichen |
|
|
du weißt aber,
das du mit dem Befehl Daten REINSCHREIBST und nicht holst?
soweit ich dich verstanden habe, sollte es so gehen:
| PHP-Code: | 1 2 3 4 5 6 7 8 9 10 11 12
| $ip_a = explode('.', $_SERVER['REMOTE_ADDR']);
$sql = "UPDATE ".SESSION_TABLE."
SET
last_visit = '".$this->time."',
".( !$config->check_ip ? "user_ip = '".$_SERVER['REMOTE_ADDR']."'," : "" )."
user_agent = '".$_SERVER['HTTP_USER_AGENT']."',
referer = '".(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "" )."',
last_page = '".$_SERVER['REQUEST_URI']."'
WHERE
session_id = '".$sid."'
".( $config->check_ip ? "AND user_ip LIKE '".$ip_a[0]."."$ip_a[1].".%'" : "" );
$db->query($sql); |
|
_________________
 |
|
|
| 27 Jun 2006 15:42 |
|
 |
David Administrator

|
 |
|
|
@ V4hn, so wie ich das verstanden habe, sucht BB-BF-BM eine Möglichkeit ohne Explode  |
_________________ MfG David Mirzoian
axinio Internet Marketing - professionelle Suchmaschinenoptimierung |
|
|
| 27 Jun 2006 16:04 |
|
 |
V4hn Moderator
|
 |
|
|
du hast es ja auch falsch verstanden
es geht darum,
dass er sich die ip nicht erst aus der DB auslesen will vorher...
meine ich zumindest^^
sonst ließe sich das zu 100% auch über regex machen...
da hab ich mich mit dem Syntax nur noch nicht wirklich beschäftigt |
_________________
 |
|
|
| 27 Jun 2006 16:06 |
|
 |
BB-BF-BM Gast
|
 |
|
|
| V4hn hat Folgendes geschrieben: | es geht darum,
dass er sich die ip nicht erst aus der DB auslesen will vorher... | da hast du mich richtig verstanden.
Übrigens: Du hast recht, das ist der Befehl, mit dem ich die Daten vorher in der DB aktualisiere, bevor ich sie auslese
Werde morgen mal deine Variante ausprobieren nd mich dann wieder melden! |
|
|
|
| 27 Jun 2006 19:15 |
|
 |
|