#33154 [Opn->Fbk]: MSSQL fetches for smallmoney and money fields create large numeric strings

From: Date: Fri, 27 May 2005 06:46:38 +0000
Subject: #33154 [Opn->Fbk]: MSSQL fetches for smallmoney and money fields create large numeric strings
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-79587@lists.php.net to get a copy of this message
ID: 33154 Updated by: sniper@php.net Reported By: jroyer at omegafi dot com -Status: Open +Status: Feedback -Bug Type: MSSQL related +Bug Type: Sybase (dblib) related Operating System: Red Hat ES 4 PHP Version: 5.0.4 New Comment: Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip Try --with-sybase-ct or --with-mssql instead of --with-sybase. (both accept same path as you used for --with-sybase!) Previous Comments: ------------------------------------------------------------------------ [2005-05-26 20:03:14] jroyer at omegafi dot com Description: ------------ We are using PHP 5.0.4/Apache 2.0.54 with FreeTDS 0.63 against a SQL Server 2000 server. When fetching money or smallmoney fields from the database, the return value is a string of size 28 or 24 respectively. This problem has surfaced when upgrading our web servers from 4.3.2 to 5.0.4. Version 4.3.2 behaves as expected. I have used the php.ini-dist out of the box to produce this problem. The configure line is as follows: ./configure \ --with-apxs2=/usr/local/apache/bin/apxs \ --enable-bcmath \ --enable-wddx \ --with-config-file-path=/etc/php4/cgi \ --with-xml \ --with-zlib \ --enable-memory-limit \ --with-sybase=/usr/local/freetds \ --enable-magic-quotes=yes \ --enable-force-cgi-redirect \ --with-gd \ --enable-gd-native-ttf \ --with-zlib-dir=/usr/include \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --with-cpdflib=/usr/local \ --with-ttf=/usr \ --with-mysql=/usr/include/mysql \ --with-freetype_dir=/usr/include/freetype2 Reproduce code: --------------- mssql_connect("Server", "UserName","Password"); mssql_select_db("Database"); $sql="Select SmallMoneyField from Table"; $result = mssql_query($sql); $row = mssql_fetch_array($result); while ($row = mssql_fetch_array($result)) { $data[] .= $row["SmallMoneyField"]; echo $row["TransactionAmount"]; } echo strlen($ydata[1]) . '<br>'; Expected result: ---------------- When the code is executed I expect to see a return of a money field with a string length equalling the number of digits (ex. "5.00" should be string length of 4). Output of the string, when viewing the browser source, shows a number followed by spaces. Actual result: -------------- For money fields I get a string length of 28, regardless of the actual number length and a string length of 24 for smallmoney fields. Other fields, such as text, varchar and integers behave as expected with values matching the number of digits/characters. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=33154&edit=1

« previous php.bugs (#79587) next »