Re: [PEAR-BUGS] [PEAR-BUG] Bug #19304 [Com]: Doesn't return all values from bit fields correctly
[email protected] (lin Jim) Fri, 24 Feb 2012 13:13:33 -0400
| Newsgroups | php.pear.qa |
|---|---|
| Message-ID | <[email protected]> |
Mobile@root On 2012年2月24日, at 上午8:58, "[email protected]" <[email protected]> wrote: > Edit report at https://pear.php.net/bugs/bug.php?id=19304&edit=1 > > ID: 19304 > Comment by: [email protected] > Reported By: mavdude at gmail dot com > Summary: Doesn't return all values from bit fields correctly > Status: Open > Type: Bug > Package: MDB2_Driver_mysql > Operating System: Ubuntu > PHP Version: 5.3.2 > Roadmap Versions: > New Comment: > > Please disregard my previous comment. The mysqli driver returns bit > fields as their decimal value. Hence me using php's ord() to show the > decimal value of the bit was wrong, which is required with the results > from the mysql driver. > > So the problem is only with the mysql driver not handling bits as > expected. Again, stable 4.2.1 with mysql driver does not have this > problem. > > Solution for me seems to be to just move to mysqli driver and remove the > use of ord() in my code... > > > Previous Comments: > ------------------------------------------------------------------------ > > [2012-02-24 12:52:55] daftmav > > -Package: MDB2 > +Package: MDB2_Driver_mysql > > > ------------------------------------------------------------------------ > > [2012-02-24 12:18:04] daftmav > > I thought I should probably move to the mysqli driver, but that shows > even weirder results and it gets all the bits wrong. > > With MDB2_Driver_mysqli 1.5.0b3 on the same 8-bit test sample, it shows > the 6th bit always on, 7th and 8th always zero, and well... everything > is wrong: > > 1 [ascii value: 49 ] 00110001 : one > 2 [ascii value: 50 ] 00110010 : two > 3 [ascii value: 52 ] 00110100 : three > 4 [ascii value: 56 ] 00111000 : four > 5 [ascii value: 49 ] 00110001 : five > 6 [ascii value: 51 ] 00110011 : six > 7 [ascii value: 54 ] 00110110 : seven > 8 [ascii value: 49 ] 00110001 : eight > 9 [ascii value: 51 ] 00110011 : one and two > 10 [ascii value: 53 ] 00110101 : one and three > 11 [ascii value: 57 ] 00111001 : one and four > 12 [ascii value: 49 ] 00110001 : one and five > 13 [ascii value: 51 ] 00110011 : one and six > 14 [ascii value: 54 ] 00110110 : one and seven > 15 [ascii value: 49 ] 00110001 : one and eight > > ------------------------------------------------------------------------ > > [2012-02-23 22:50:12] daftmav > > Description: > ------------ > Some values from bit fields are incorrectly returned as zero (or null?). > Not sure why it's only doing this with some bits 'on', but not when > other bits are also 'on'. Makes me think it has something to do with > bits being returned as weird ascii characters from the DB and MDB2 > filters or can't handle some of them? > > Stable 4.2.1 does not have this issue and correctly returns all bit > values. > > Tested with MDB2 2.5.0b3 and MDB2_Driver_mysql 1.5.0b3 > Also tried 2.5.0b2 but it's the same. I found it because I'm moving a > site to a php5 setup and 2.4.1 has al sorts of errors with it so I tried > the beta. > > Test script: > --------------- > A table with some sample data included: > http://pastebin.com/ckvX78u4 > > Because bit values are returned like actual bits, I've added a simple > test script which shows the problem in a more readable format. > > Expected result: > ---------------- > 1 [ascii value: 1 ] 00000001 : one > 2 [ascii value: 2 ] 00000010 : two > 3 [ascii value: 4 ] 00000100 : three > 4 [ascii value: 8 ] 00001000 : four > 5 [ascii value: 16 ] 00010000 : five > 6 [ascii value: 32 ] 00100000 : six > 7 [ascii value: 64 ] 01000000 : seven > 8 [ascii value: 128 ] 10000000 : eight > 9 [ascii value: 3 ] 00000011 : one and two > 10 [ascii value: 5 ] 00000101 : one and three > 11 [ascii value: 9 ] 00001001 : one and four > 12 [ascii value: 17 ] 00010001 : one and five > 13 [ascii value: 33 ] 00100001 : one and six > 14 [ascii value: 65 ] 01000001 : one and seven > 15 [ascii value: 129 ] 10000001 : one and eight > > Actual result: > -------------- > Note: row 6 and 11 are wrong (zero): > 1 [ascii value: 1 ] 00000001 : one > 2 [ascii value: 2 ] 00000010 : two > 3 [ascii value: 4 ] 00000100 : three > 4 [ascii value: 8 ] 00001000 : four > 5 [ascii value: 16 ] 00010000 : five > 6 [ascii value: 0 ] 00000000 : six <<<--- zero > 7 [ascii value: 64 ] 01000000 : seven > 8 [ascii value: 128 ] 10000000 : eight > 9 [ascii value: 3 ] 00000011 : one and two > 10 [ascii value: 5 ] 00000101 : one and three > 11 [ascii value: 0 ] 00000000 : one and four <<<--- zero > 12 [ascii value: 17 ] 00010001 : one and five > 13 [ascii value: 33 ] 00100001 : one and six > 14 [ascii value: 65 ] 01000001 : one and seven > 15 [ascii value: 129 ] 10000001 : one and eight > > ------------------------------------------------------------------------ > > > -- > Edit this bug report at https://pear.php.net/bugs/bug.php?id=19304&edit=1 > > > -- > PEAR Bugs Mailing List (http://pear.php.net/bugs/) > To unsubscribe, visit: http://www.php.net/unsub.php >