#32395 [Opn->Csd]: odbc_execute modifies the param array

From: Date: Tue, 03 Jan 2006 17:36:05 +0000
Subject: #32395 [Opn->Csd]: odbc_execute modifies the param array
References: 1  Groups: php.doc 
Request: Send a blank email to phpdoc+get-969371426@lists.php.net to get a copy of this message
ID: 32395 Updated by: vrana@php.net Reported By: treehousetim at gmail dot com -Status: Open +Status: Closed Bug Type: Documentation problem Operating System: * PHP Version: 5CVS, 4CVS (2005-03-24) New Comment: This bug has been fixed in the documentation's XML sources. Since the online and downloadable versions of the documentation need some time to get updated, we would like to ask you to be a bit patient. Thank you for the report, and for helping us make our documentation better. "Elements of this array will be converted to strings by calling this function." Previous Comments: ------------------------------------------------------------------------ [2005-12-25 17:41:06] sniper@php.net It has to change the input array, because it should convert all the values in strings without separating them to be able to get returned values from stored proc. Needs documenting. ------------------------------------------------------------------------ [2005-03-21 23:04:36] treehousetim at gmail dot com More specifically, all entries in the array are changed to string types. here is more data as requested using var_dump instead of print_r. BEFORE: array(3) { [0]=> int(44) [1]=> NULL [2]=> NULL } AFTER: array(3) { [0]=> string(2) "44" [1]=> string(0) "" [2]=> string(0) "" } ------------------------------------------------------------------------ [2005-03-21 22:45:37] sniper@php.net Please change print_r -> var_dump to get more detailed information out of the $paramList variable. ------------------------------------------------------------------------ [2005-03-21 18:38:28] treehousetim at gmail dot com Description: ------------ Calling odbc_execute modifies the input paramList array. This happens even when I try to make a copy of the array before passing it to odbc_execute. Specifically, null parameters are changed to zero length strings. Reproduce code: --------------- <?php function x( $query, $paramList ) { $result = odbc_execute( $query, $paramList ); $paramList['timg'] = "Tim Gallagher"; } // change the server and database below to the correct values for your setup $connection = 'DRIVER={SQL Server};SERVER=server;DATABASE=database'; $handle = odbc_connect( $connection, '', '' ); $query = odbc_prepare( $handle, "INSERT INTO TEST (ID,CHECK_LONG,CHECK_VARCHAR) VALUES (?, ?, ? )" ); $paramList[0] = 44; $paramList[1] = null; $paramList[2] = null; echo gettype($paramList[2]) . "\n"; // echos NULL x( $query, $paramList ); echo gettype($paramList[2]) . "\n"; // echos string print_r( $paramList ) ?> Expected result: ---------------- NULL string Array ( [0] => 44 [1] => [2] => ) Actual result: -------------- NULL NULL Array ( [0] => 44 [1] => [2] => ) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=32395&edit=1

« previous php.doc (#969371426) next »