That's quite easy:

100000358490906 gives a 8 byte long hexadecimal value of:
Since integer is 4 bytes long, only the last 4 bytes are probably stored
(or maybe the first 4, that could depend on the code, or your
endianness, but I don't know that).

Anywhay, 25D8631A gives a nice value of 634938138.  

Your second is hex 5AF310CBF00C, last 4 bytes 10CBF00C gives =>

Getting the original value back is not that difficult, just add
100000000000000  hex (5AF300000000)

Now this may just work for you, remember that you can't actually know
what was in those first 4 so adding 5AF300000000 may just be wrong.
However for the examples you gave, it seems to add up. 

So you need to have some indication of the range the originals would've
had or the numbers you get are a multiple of 2^32 off.


On Thu, 2009-10-08 at 17:09 +0200, Philipp Moeser wrote:
> Hi all,
> we used the bind_param function to insert a lot of integers into our 
> database. As I just found out now quite a few of them were bigints, and 
> did not end up correctly in the database, because the integer parameter 
> supports only integers up to 2^32.
> Now my question: Anybody know how I can calculate the ID that I have in 
> my database out of the original ID that was supposed to go there?
> Two examples:
> original ID: 100000358490906
> result in DB: 634938138
> original ID: 100000005353484
> result in DB: 281800716
> I suppose I cannot get the original ID from what i have in the DB, but 
> how does mysqli calculate that shorter value it passes to DB?
> Thanks for any help
> Philipp

PHP Database Mailing List (
To unsubscribe, visit:

Reply via email to