Bug #17907 Updated: mysql_query seems to strip trailing spaces from variables

From: Date: Fri, 21 Jun 2002 18:36:46 +0000
Subject: Bug #17907 Updated: mysql_query seems to strip trailing spaces from variables
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-11723@lists.php.net to get a copy of this message
ID: 17907 Updated by: cynic@php.net Reported By: andrewt@weekendhosting.com -Status: Open +Status: Bogus Bug Type: MySQL related Operating System: Win2000 / Unix PHP Version: 4.2.1 New Comment: you were supposed to provide something like this: mysql> DESCRIBE test; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | test | char(5) | | | | | +-------+---------+------+-----+---------+-------+ <? echo PHP_VERSION , "\n"; echo uname -sr , "\n"; mysql_connect('localhost', 'test', ''); mysql_select_db('test'); mysql_query('TRUNCATE test'); mysql_query("INSERT test (test) VALUES ('x ')"); $rs = mysql_query('SELECT CONCAT(\'"\', test, \'"\') FROM test'); while ($row = mysql_fetch_assoc($rs)) { var_dump($row); } 4.3.0-dev FreeBSD 4.5-STABLE array(1) { ["CONCAT('"', test, '"')"]=> string(3) ""x"" } checking with mysql(1): mysql> TRUNCATE test; Query OK, 0 rows affected (0.00 sec) mysql> INSERT test (test) VALUES ('x '); Query OK, 1 row affected (0.00 sec) mysql> SELECT CONCAT('"', test, '"') FROM test; +------------------------+ | CONCAT('"', test, '"') | +------------------------+ | "x" | +------------------------+ checking with the MySQL manual (you didn't mention the column type, so I'm just guessing): "When CHAR values are stored, they are right-padded with spaces to the specified length. When CHAR values are retrieved, trailing spaces are removed." looks like it's not a PHP bug -> bogusifying. Previous Comments: ------------------------------------------------------------------------ [2002-06-21 14:00:49] andrewt@weekendhosting.com With respect, but please be gentle, i've read that page, I don't know what more I can tell you $myVar = '1234 ' // note the trailing space If I include this in a query $query = "INSERT INTO myTable (myValue) VALUES ('$myVar')"; I would expect it to store '1234 ' including the trailing space in to the db. However, what actually happens is somewhere between calling mysql_query() and the query taking place something strips the trailing space. This happens on 4.0.6, 4.1.2 and 4.2.1, it happens on my Win2000 box and my Unix host. The field is a varchar. If I make the same insert using a Win32 gui (such as mysqlFront) it includes the trailing space, if then copy the sql statement that the gui uses in to a mysql_query() the space goes. I really can't give any more information than this, please please don't just dismiss this as bogus, just run those two lines against a DB, if it doesn't happen to you then just ignore me. Just to re-itterate, I can not store values with trailing spaces in to mysql. ------------------------------------------------------------------------ [2002-06-21 13:53:30] cynic@php.net You haven't provided the required info -> bogus. ------------------------------------------------------------------------ [2002-06-21 13:45:00] andrewt@weekendhosting.com It's nothing more complex than I can't insert a variable in which the last character is whitespace into mysql using mysql_query. $myVar = '1234 '; will go in to the database as '1234' I can do this using mysqlfront which indicates there is something different in the php function mysql_query ------------------------------------------------------------------------ [2002-06-21 13:38:45] cynic@php.net Not enough information was provided for us to be able to handle this bug. Please re-read the instructions at http://bugs.php.net/how-to-report.php If you can provide more information, feel free to add it to this bug and change the status back to "Open". Thank you for your interest in PHP. ------------------------------------------------------------------------ [2002-06-21 13:37:37] andrewt@weekendhosting.com Further to this mysqlfront (which is presumably using the c++ mysql API can handle this trailing space no problem) ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/17907 -- Edit this bug report at http://bugs.php.net/?id=17907&edit=1

« previous php.bugs (#11723) next »