Prev: scheduler
Next: PHP on Pear
From: Philipp Moeser on 8 Oct 2009 11:09 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
From: Maarten =?ISO-8859-1?Q?Foqu=E9?= on 9 Oct 2009 03:45 That's quite easy: 100000358490906 gives a 8 byte long hexadecimal value of: 5AF325D8631A 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 => 281800716 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. regards, Maarten 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 > >
|
Pages: 1 Prev: scheduler Next: PHP on Pear |