Bug #75018 [Opn->Csd]: Data corruption when reading fields of bit type

From: Date: Wed, 13 Sep 2017 12:13:20 +0000
Subject: Bug #75018 [Opn->Csd]: Data corruption when reading fields of bit type
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-211126@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=75018&edit=1

 ID:                 75018
 Updated by:         ab@php.net
 Reported by:        ale5000 at gmail dot com
 Summary:            Data corruption when reading fields of bit type
-Status:             Open
+Status:             Closed
 Type:               Bug
 Package:            MySQLi related
 Operating System:   Windows 7 64-bit
 PHP Version:        7.1.7
 Block user comment: N
 Private report:     N

 New Comment:

Automatic comment on behalf of ab
Revision: http://git.php.net/?p=php-src.git;a=commit;h=3d93856c4a05394196c5610ae11cf019d1e18f76
Log: Fixed bug #75018, fixed bug #75177


Previous Comments:
------------------------------------------------------------------------
[2017-09-13 11:06:19] ab@php.net

Related To: Bug #75177

------------------------------------------------------------------------
[2017-08-01 15:07:53] michal at cihar dot com

I've just tested this and here is what I've found out:

- I can reproduce this when running 32-bit PHP on 64-bit Windows, it does not happen in 64-bit
builds
- The returned value seems to be random, depending on executed code or MySQL statements
- I can reproduce this behavior on PHP 7.1.7 and 7.2.0beta1

Results I got: 0x1508618400000000 0x100000000 0x10c6632400000000 (though this most likely
doesn't mean anything)

------------------------------------------------------------------------
[2017-08-01 14:19:29] ale5000 at gmail dot com

Description:
------------
It corrupt data when reading fields of bit type.
See the sample code.

The problem is possibly Windows specific but I'm not sure.

Test script:
---------------
<?php
$username = 'root';
$password = '';
$database_name = 'test_db';

$mysqli = new mysqli('127.0.0.1', $username, $password, $database_name);

if($mysqli->connect_errno) die('Error');

$sql = "CREATE TABLE test (bit_column_1 bit(1) NOT NULL) DEFAULT CHARSET=utf8";
$mysqli->query($sql);

$sql = "INSERT INTO test (bit_column_1) VALUES (0)";
$mysqli->query($sql);

$sql = "SELECT bit_column_1 FROM test";
if(!$result = $mysqli->query($sql)) die('Failed');

$row = $result->fetch_assoc();
echo "Result: ".$row['bit_column_1'];

Expected result:
----------------
0

Actual result:
--------------
668556962937438208


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=75018&edit=1


Thread (8 messages)

« previous php.bugs (#211126) next »