Hallo AndreD,
Siehe beispielsweise die Warnung bei http://de2.php.net/manual/en/function.mysql-insert-id.php.
Ok, so wie die das schreiben heisst das wohl das die Zahl, welche
ich mit mysql_insert_id() zurückbekomme grundsätzlich falsch sein
müsste?
Nein. Eine Zahl wird intern in Form von Bitmasken im Binär-System
dargestellt. PHP benutzt hier long, was auf x86-Systemen mit 32 Bit
dargestellt wird. Mit 32 Bit lassen sich Zahlen von -2147483647 bis
+2147483647 darstellen (2^32 / 2, ein Bit ist für das Vorzeichen
reserviert (deshalb dividiert durch zwei) und man fängt bei 0 an zu
zählen, deshalb 2147483647 und nicht 2147483648). Eine größere Zahl
kann in PHP als Zahl nicht dargestellt werden. Auf anderen Systemen
hat long eine andere Größe. Tatsächlich kannst du nicht wissen, wie
gross long bei PHP ist. Auf gängigen Systemen ist es allerdings zum
Glück 32 Bit gross.
So wie ich das sehe, sollte man BIGINT-Zahlen grundsätzlich als
String behandeln und im Machtbereich von MySQL belassen,
keinesfalls jedoch eine Wandlung in eine PHP-Zahl versuchen.Soll heissen: Solange ich ich nicht versuche die BIGINT in PHP als
Zahl zu nutzen (etwa für Rechenoperationen) oder ein typecasting
hat dies kein Einfluss?
Nein, PHP ist komplizierter. Du musst darauf achten, was für
Datentypen die Funktionen erwarten. Erwarten sie einen numerischen
Datentyp, kannst du die ID dort nicht verwenden. Erwarten sie einen
String, ist das Ok.
Grüße,
CK
Ihr wisst nicht, wie man den Menschen dient. Wie sollt ihr wissen, wie man den Goettern dienen soll?