|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-06-21 13:34 UTC] andrewt at weekendhosting dot com
$myVar = 'SR4 1 ';
$sql = "INSERT INTO myTable (myField) VALUES ('$myVar')";
echo $sql."<br>";
$result = mysql_query($sql);
-----
I'm not so sure if this is a bug, but surely, it's not supposed to do this ??
Thanks
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Nov 12 18:00:01 2025 UTC |
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.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.