Yii Framework Forum: [ERLEDIGT] INET_ATON bei ActiveRecord verwenden. - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[ERLEDIGT] INET_ATON bei ActiveRecord verwenden. Rate Topic: -----

#1 User is offline   Coksnuss 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 140
  • Joined: 14-May 09

Posted 08 August 2009 - 07:01 AM

Hallo,

ich wollte einmal Wissen wie ich es am besten umsetzte die IP im integer Format in einer PDO-Datenbank zu speichern.

In MySQL gibt es dafür spezifisch die Funktion INET_ATON - Allerdings bezweifel ich das diese Funktion auch für Sqlite, Orcale und andere Datenabnken existiert.
Also wollte ich mit der PHP Funktion ip2long und long2ip arbeiten. Aber hier habe ich das Problem dass ich signed integers herausbekomme und keine unsigned wie es normalerweise sein sollte.
Somit resultiert eine Abrage wie (SELECT `ip` FROM `counter` WHERE `ip` = '-123882333') immer im nirgentwo (ip UNSIGNED INT).

Wie mache ich es also am besten? Ip doch als String speichern?
0

#2 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,016
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 10 August 2009 - 03:04 AM

Wusste gar nicht, dass es nen Standard gibt, um IP-Adressen in INT umzuwandeln. Hätte die INT-Variante denn irgendeinen Vorteil gegenüber Strings (von den paar gesparten Bytes mal abgesehen)?
0

#3 User is offline   Coksnuss 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 140
  • Joined: 14-May 09

Posted 10 August 2009 - 05:24 PM

View PostMike, on 10 August 2009 - 03:04 AM, said:

Wusste gar nicht, dass es nen Standard gibt, um IP-Adressen in INT umzuwandeln. Hätte die INT-Variante denn irgendeinen Vorteil gegenüber Strings (von den paar gesparten Bytes mal abgesehen)?


Neee, einzig und allein die paar gesparten Bytes... (immerhin 11 Bytes pro Eintrag)... Weiß nicht ob es auch performancemäßig was bringt.

Aber da ich IP Adressen in MySQL immer mit INET_ATON gespeichert habe und mit INET_NTOA auslese wollte ich das jetzt auch mit AR umsetzen.
0

#4 User is offline   sebi 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 65
  • Joined: 06-October 08

Posted 10 August 2009 - 05:33 PM

Naja was kostet festplattenplatz heutzutage?^^
Performancemäßig dürfte sich das nur minimal auswirklen, wahrscheinlich nicht mal im sichtbaren kommastellen bereich.
0

#5 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,016
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 11 August 2009 - 03:22 AM

Kommt natürlich immer auf die Anzahl der Datensätze an. Wenn du's wirklich unbedingt brauchst, könntest du die Funktion INET_ATON() ja in beforeSave/afterFind im Record (oder auch eingebunden über ein behavior) selber durchführen. Gemäß der MySQL-Referenz macht die nix anderes als:

$ip="A.B.C.D";
 $n=explode('.',$ip);
 $int=$n[0]*256^3 + $n[1]*256^2 + $n[2]*256 + $n[3];
 


Andersrum isses minimal komplizierter... :)
1

#6 User is offline   Coksnuss 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 140
  • Joined: 14-May 09

Posted 15 August 2009 - 09:04 AM

View PostMike, on 11 August 2009 - 03:22 AM, said:

Kommt natürlich immer auf die Anzahl der Datensätze an. Wenn du's wirklich unbedingt brauchst, könntest du die Funktion INET_ATON() ja in beforeSave/afterFind im Record (oder auch eingebunden über ein behavior) selber durchführen. Gemäß der MySQL-Referenz macht die nix anderes als:

$ip="A.B.C.D";
 $n=explode('.',$ip);
 $int=$n[0]*256^3 + $n[1]*256^2 + $n[2]*256 + $n[3];
 


Andersrum isses minimal komplizierter... :)


Das ist eine gute Möglichkeit! Danke

Ich weiß auch nicht wieso ich das umbedingt machen möchte.. Bin halt irgentwie einer der immer TINYINT nutzt wenn es geht usw...
0

#7 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,016
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 15 August 2009 - 03:38 PM

View PostCoksnuss, on 15 August 2009 - 09:04 AM, said:

Bin halt irgentwie einer der immer TINYINT nutzt wenn es geht usw...


... was ja prinzipiell nix schlechtes ist ;)
0

#8 User is offline   sebi 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 65
  • Joined: 06-October 08

Posted 15 August 2009 - 04:14 PM

Die Liebe liegt im Detail ;)
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users