Menu

#102 [PHP]Return value is not correct when passing a value in binary mode

open
nobody
None
5
2012-03-03
2012-03-03
Jira Trac
No

Test Build: CUBRID 2008 R4.1 (8.4.1.1018) (64bit release build for linux_gnu)
OS: Linux 64
Description: Return value is not correct when passing a value in binary mode

Repro steps:
1. execute: php bind_bit_test.phpt
statements in bind_bit_test.phpt
{noformat}
[php@NC-PL-QA014 _02_prepare]$ cat bind_bit_test.phpt
?php
$conn = cubrid_connect(localhost, 33113, phpdb);
cubrid_execute($conn, 'DROP TABLE IF EXISTS bit1_tb');
cubrid_execute($conn, 'DROP TABLE IF EXISTS bit2_tb');
cubrid_execute($conn, 'DROP TABLE IF EXISTS bit3_tb');
$sql = EOD
CREATE TABLE bit1_tb(a1 bit(8));
EOD;
cubrid_execute($conn,$sql);

cubrid_execute($conn,create table bit2_tb(a2 bit(8)));
cubrid_execute($conn,insert into bit2_tb values(B'1010'),(0xaa));

printf(#####select from bit2_tb #####\n);
$req1=cubrid_execute($conn,select * from bit2_tb);
if ($req1) {
$res=cubrid_fetch($req1);
print_r($res);
cubrid_close_prepare($req1);
}

printf(\n\n#####select from bit1_tb #####\n);
$req2 = cubrid_prepare($conn, 'INSERT INTO bit1_tb VALUES(?)');
if(!$tmp=cubrid_bind($req2, 1,B'1010','bit')){
printf([%d] %s\n, cubrid_errno($conn), cubrid_error($conn));
}
cubrid_execute($req2);
$req3 = cubrid_execute($conn, SELECT * FROM bit1_tb);
$result = cubrid_fetch_assoc($req3);
var_dump($result);
cubrid_close_prepare($req3);

printf(\n\n#####select from bit3_tb #####\n);
cubrid_execute($conn,create table bit3_tb(a3 bit(8)));
$req4 = cubrid_prepare($conn, 'INSERT INTO bit3_tb VALUES(?)');
if(!$tmp=cubrid_bind($req4, 1,B'1010','bit')){
printf([%d] %s\n, cubrid_errno($conn), cubrid_error($conn));
}
cubrid_execute($req4);
$req5 = cubrid_execute($conn, SELECT * FROM bit3_tb);
$result5 = cubrid_fetch_assoc($req5);
var_dump($result5);
cubrid_close_prepare($req5);

cubrid_close($conn);
print Finished!\n;
?
{noformat}

Actual result:
{noformat}
#####select from bit2_tb #####
Array
(
[0] = A0
[a2] = A0
)

#####select from bit1_tb #####
array(1) {
[a1]=
string(2) 42
}

#####select from bit3_tb #####
array(1) {
[a3]=
string(2) 31
}
{noformat}

Expect result:
{noformat}
#####select from bit2_tb #####
Array
(
[0] = A0
[a2] = A0
)

#####select from bit1_tb #####
array(1) {
[a1]=
string(2) A0
}

#####select from bit3_tb #####
array(1) {
[a3]=
string(2) A0
}
{noformat}

Discussion

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.